【问题标题】:preventDefault in SafariSafari 中的阻止默认设置
【发布时间】:2011-05-31 10:07:37
【问题描述】:

我有一个包含代码的文本框;

<input type="text" maxlength="5" size="2" value="1" id="paging_textbox">

现在这个页面上没有包含表单标签了..

当用户在此文本框中键入并按 Enter 时,此页面上的表格会更新(通过 AJAX 调用)

在 Safari 中,行为略有不同,即使它正确更新了表格,它也会重新加载页面(认为它提交了表单,但不确定如何因为没有表单标签)并重置文本框值回到“1”

如何防止在 Safari 中发生这种情况?

请帮助我。谢谢。

【问题讨论】:

    标签: javascript jquery html safari webkit


    【解决方案1】:

    为了确定,用return false 终止你的回调函数。 这应该可以解决问题。

     function(e) {
         e.preventDefault();
         // some awesome code
         return false;
     }
    

    哦,还有一件事:在未来,为了避免这种随机行为.. 尊重标准,使用 form :)

    【讨论】:

    • 嘿..只是一件事...preventDefault或return false在Safari中究竟会阻止什么...因为我没有使用表单或什至没有点击按钮,我不认为有是否要阻止任何提交操作...
    • 好吧,如果您在该输入周围添加 &lt;form&gt; &lt;/form&gt; 并获得有效的 HTML,那么根本不会有任何问题 :)
    【解决方案2】:

    在 jQuery 中

    //Press Enter in INPUT moves cursor to next INPUT
    $('#form').find(':input').keypress(function(e){
        if ( e.which == 13 )
        {
            $(this).next().focus();  //Use whatever selector necessary to focus the 'next' input
        }
    });
    

    JAVASCRIPT

    <script language="JavaScript">
    function disableEnterKey(e)
    {
         var key;
         if(window.event)
              key = window.event.keyCode;     //IE
         else
              key = e.which;     //firefox
         if(key == 13)
              return false;
         else
              return true;
    }
    </script>
    

    然后写

    <input type=”text” name=”mytext” onKeyPress=”return disableEnterKey(event)”>
    

    【讨论】:

      【解决方案3】:

      使用 event.preventDefault() 或 return False 应该可以为您解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-20
        • 2015-05-04
        • 2016-05-04
        • 2017-01-09
        • 2015-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多