标签: preventdefault

停止表单提交,使用Jquery

我试图阻止我的表单提交验证失败.我试过按照上一篇文章,但我不适合我.我错过了什么?

<input id="saveButton" type="submit" value="Save" />
<input id="cancelButton" type="button" value="Cancel" />
<script src="../../Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
<script type="text/javascript">

    $(document).ready(function () {
        $("form").submit(function (e) {
            $.ajax({
                url: '@Url.Action("HasJobInProgress", "ClientChoices")/',
                data: { id: '@Model.ClientId' },
                success: function (data) {
                    showMsg(data, e);
                },
                cache: false
            });
        });
    });
    $("#cancelButton").click(function () {
        window.location = '@Url.Action("list", "default", new { clientId = Model.ClientId })';
    });
    $("[type=text]").focus(function () {
        $(this).select();
    });
    function showMsg(hasCurrentJob, sender) {
        if (hasCurrentJob == "True") {
            alert("The current clients has a job in …
Run Code Online (Sandbox Code Playgroud)

validation jquery preventdefault asp.net-mvc-3

54
推荐指数
2
解决办法
19万
查看次数

在Chrome中按Ctrl + S preventDefault

我想在Chrome中捕获Ctrl+ S,并阻止默认浏览器行为来保存页面.怎么样?

(只是发布问题和答案,因为我在这之后很长一段时间没找到解决方案)

javascript jquery google-chrome preventdefault

37
推荐指数
3
解决办法
3万
查看次数

阻止href打开链接但仍然执行其他绑定事件

我想阻止打开页面的链接.所以我写了这个:

$("a").click(function(e) {
    e.preventDefault()
}
Run Code Online (Sandbox Code Playgroud)

太棒了!但这阻止了我的另一个事件:

$(".toolbar a").click(function(e) {
    ...action...
}
Run Code Online (Sandbox Code Playgroud)

当然,我可以通过一些测试将我的动作添加到第一个事件,但有一种优雅的方法可以防止只有 href事件执行吗?

编辑

事实上它很有效,对不起.看@ raina77ow小提琴在这里工作:http://jsfiddle.net/HeFS6/

jquery events click preventdefault

27
推荐指数
2
解决办法
4万
查看次数

不推荐使用getPreventDefault().请改用defaultPrevented.为什么我得到这个错误,它的解决方案是什么?

以前我在我的代码中使用jQuery 1.7.1.我收到了上述错误.然后我直接从谷歌存储库使用jQuery 1.11.1

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js">
</script>
Run Code Online (Sandbox Code Playgroud)

但我仍然得到这个错误.我该如何解决这个问题?

由于此错误,我的其他jQuery功能也无法正常工作.

我研究了很多关于解决方案但是每次我都得到相同的升级jQuery版本的解决方案.但这也不适合我.

migration jquery deprecated preventdefault

27
推荐指数
3
解决办法
8万
查看次数

无法阻止iOS上滚动窗口的"touchmove"

我们正在尝试在我们的iOS网络应用上滚动元素,同时防止窗口本身滚动.我们正在touchmove窗口上捕获事件,以编程方式滚动元素并(尝试)通过调用preventDefault事件来阻止窗口本身滚动.

不幸的是,这在Mobile Safari中不起作用.窗口继续在我们的元素下滚动.问题听起来与https://bugs.webkit.org/show_bug.cgi?id=163207中描述的Webkit错误完全相同,但该问题在iOS 10.3中已得到修复,而我运行的是11.3.

捕获touchforcestart和调用preventDefault似乎确实阻止了窗口的滚动,但是我们正在调用它touchstart,因为窗口仍然滚动,这似乎"太晚了".滚动仅在下次touchstart调用时被阻止.

关于发生了什么的任何想法?我们感到困惑,因为这显然是一个错误,但它似乎已经修复了一段时间.

scroll mobile-safari ios preventdefault touchmove

24
推荐指数
2
解决办法
2万
查看次数

JavaScript中有与preventDefault()相反的功能吗?

我正在计算文本字段中的单词,并在一定数量的单词后,我使用防止默认.在else中,我想重新设置默认命令.

preventDefault()是否具有相反的功能?

以下是一些示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>preventDefault</title>
    <style type="text/css"></style>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
                var wordNum = 3;
                var input_length;
                $("#max").text("max word(s): " + wordNum);
                $("#test").keypress(function(event) {

                    input_length = $.trim($(this).val())
                            .replace(/\s+/g, " ")
                            .split(' ').length;

                    if (input_length > (wordNum - 1)) {
                        event.preventDefault();
                    } else {
                        return true;
                    }
                });
            });

        </script>
        </head>
        <body>
            <div id="max"></div>
            <textarea id="test" cols="20" rows="5"></textarea>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

它似乎适用于IE,但Firefox并不喜欢它.

firefox jquery function preventdefault jquery-events

20
推荐指数
2
解决办法
3万
查看次数

阻止链接,确认然后转到位置jquery

我有这样的链接.

<a href="delete.php?id=1" class="delete">Delete</a>
Run Code Online (Sandbox Code Playgroud)

如果用户点击它.应该弹出确认,然后只有当用户单击是时,它才会转到实际的URL.

我知道这可以防止默认行为

    function show_confirm()
    {
    var r=confirm("Are you sure you want to delete?");
    if (r==true)   {  **//what to do here?!!** }

    }    


    $('.delete').click(function(event) {
    event.preventDefault();
    show_confirm()
    });
Run Code Online (Sandbox Code Playgroud)

但是如何确认后我如何继续链接或发送ajax帖子到该链接?

jquery popup confirmation preventdefault

18
推荐指数
1
解决办法
3万
查看次数

有没有办法在focusOut中使用event.preventDefault?如果没有,为什么?

我想阻止focusOut(或blur)事件的默认事件,并将焦点设置为特定的输入字段.

这是我已经尝试过的:

  • 使用event.preventDefault()之初,在函数结束时(用于测试目的,而不是风格)

  • return false; 防止传播

  • 将焦点直接设置回元素中的元素(但我发现焦点仍然会切换,因为焦点开关在函数执行.on()执行.我知道我可以使用setTimeout,但我想避免它并弄清楚心脏这个问题.)

  • 使用blur而不是focusOut

我的代码是这样的:

    _triggerEventHide: function(inst, eventType) {
        inst.$target.on(eventType, function(event) {
            event.preventDefault();
            if (!$.suggestBox.$divCont.hasClass($.suggestBox.mouseOverClassName)) {
                $.suggestBox.$divCont.css({display: 'none'});   //reposition Suggestbox
            } else {
                inst.target.focus(); 
            }
            event.preventDefault();
            return false;
        });
     }
Run Code Online (Sandbox Code Playgroud)

注意,它$target表示jQuery包装的元素并target表示本机DOM元素.

我做了一些研究,已经发现了一些与我的问题相关的文章,但没有一个回答这个问题.

  1. preventDefault对焦点事件不起作用 - 这里给出的答案是使用任何类型的事件操作的替代路径.

  2. 如果没有必要的值,将焦点反射回文本框 - 这里,解决方案是用来setTimeout()将焦点设置回原始元素,这是好的,但我想了解问题的核心,为什么preventDefault()是不在这里工作.

  3. jQuery preventDefault()不起作用 - 我尝试了一些可能的解决方案来自这个线程,比如使用event.stopImmediatePropagation()event.stop(),但一切都没有用.

我感谢任何时候,知识和解决方案(包括尝试)在这件事上的贡献.我真的想学习......

这是一个jsFiddle,向您展示问题...随意玩它并尝试不同的解决方案.

jquery event-handling javascript-events preventdefault

16
推荐指数
1
解决办法
2万
查看次数

event.preventDefault vs event.stopPropagation

有人可以解释event.preventDefault()和之间的区别是event.stopPropagation()什么?

我有一张桌子,在那张桌子里我有一个img标签.

当我点击img标签时,我想看一个弹出窗口.

但我也想停止选择多行,所以我使用:

$("table.items tbody tr").click(function(event) {
        event.stopPropagation();
    });
Run Code Online (Sandbox Code Playgroud)

当我使用js代码时,弹出窗口不会出现;

如果我删除了js代码,弹出窗口就可以了.

$(".info").live("click",function(e){
    //console.log('ok');
    e.stopPropagation();
    var elem = $(this);
    var id = $(this).attr("id").replace("image_","container_");
    $('#'+id).toggle(100, function() {
        if($(this).css('display') == 'block') {
            $.ajax({
                url: "$url",
                data: { document_id:elem.attr('document_id') },
                success: function (data) {
                    $('#'+id).html(data);
                }
            });
            }
        });
});
Run Code Online (Sandbox Code Playgroud)

为什么?

javascript jquery preventdefault stoppropagation

16
推荐指数
3
解决办法
4万
查看次数

保持Twitter Bootstrap工具提示在mouseleave上打开

对于特定的情况和元素,我需要默认显示Bootstrap Tooltip(一旦加载页面),始终保持打开(即使在鼠标悬停和鼠标移除时).

这是我用来在元素上默认打开工具提示的代码:

$('#myelement').tooltip('show');
Run Code Online (Sandbox Code Playgroud)

现在我不确定如何在mouseover和mouseout上阻止/禁用工具提示的默认操作.任何的想法?

提前致谢!

javascript jquery tooltip preventdefault twitter-bootstrap

15
推荐指数
2
解决办法
2万
查看次数