0

type="submit"我有这段代码,我已经更改和调整了太多次,但如果表单按钮是 a并且我可以忍受它,它就不起作用,但是有什么原因,有人可以告诉我为什么吗?如果我将类型更改为type="button"然后它可以工作。

$(document).ready(function () {
    $('#btnSubmit').attr('disabled', true);
    $('#myForm :input:not(#btnSubmit)').blur(function () {
        if ($('#myField').val() == '') {
            $('#btnSubmit').attr('disabled', true);
        } else {
            $('#btnSubmit').attr('disabled', false);
        }
    });
});

我有大约 25 本书,它们告诉你如何使用 Not 运算符,但现在它在哪里说表单按钮必须有一个类型按钮而不是提交类型才能工作。

只是想学习。

注意:上面的代码已经更改了很多次,我试图找出原因。

<form name="myForm" id="myForm" method="post" action="">
  <label for="myField">Name</label>
  <input type="text" name="myField" id="myField">
  <input type="button" name="btnSubmit" id="btnSubmit" value="Submit">
</form>

更新:

*我遇到的问题是当我单击按钮时按钮再次被禁用:有人可以向我解释为什么会发生这种情况吗?在我输入一些值并离开该字段后,该按钮被启用,但是,一旦我单击它就会被禁用。

但是,如果我将输入类型更改为按钮,则单击时不会禁用该按钮。我不确定为什么会这样。这就是为什么我最初认为这是一个错误或某种支持问题。

只是好奇,为了知识,知识的好处。*

4

3 回答 3

2

我怀疑你的 not 声明可能很好。你确定它失败了,你调试过它吗?您的问题可能真的在这里:

$('#btnSubmit').attr('disabled', true);

查看.attr().prop()的 jQuery 文档。您应该在.prop()这里使用,因为.attr()如果您不了解它的工作原理,通常会给您带来意想不到的结果。

因此,将您的代码更改为使用 prop,如果这不能解决您的问题,请调试您的非选择器。

$('#btnSubmit').prop('disabled', true);

编辑

根据您的评论,我再次审查了您的问题。这是发生了什么:

  1. 输入一个值
  2. 按钮启用
  3. 按下按钮
  4. 页面帖子和回发后,按钮被禁用
  5. 您希望在回发后启用按钮

如果是这样,问题是您在页面加载时禁用按钮,但仅在模糊事件中启用它。回发后,模糊不会自动发生,但实际上最简单的解决方案是在禁用按钮后手动触发模糊(如果触发模糊,实际上不需要禁用它):

$(document).ready(function () {
    $('#btnSubmit').prop('disabled', true);

    $('#myForm :input:not(#btnSubmit)').blur(function () {
        if ($('#myField').val() == '') {
            $('#btnSubmit').prop('disabled', true);
        } else {
            $('#btnSubmit').prop('disabled', false);
        }
    });

   $('#myField').blur();
});
于 2013-06-24T20:48:07.573 回答
0

您的代码确实有效,在这里:http: //jsfiddle.net/AstDerek/s5cyk/

您希望您使用的代码会发生什么?


原答案:

我不太明白您的代码做了什么,但您似乎正在尝试button使用:input选择器来定位 a,因此您的代码无法按预期工作。也许这个选择器可以完成这项工作:

$('#myForm :input:not(#btnSubmit), #myForm button:not(#btnSubmit)')
于 2013-06-24T19:06:10.480 回答
0

如果您只有一个输入字段,那么为什么要尝试使用非选择器。你可以通过它的id来获取它。

$("#myField").blur(function(){    
    // Do stuff here.. 
});

如果您想获取除提交按钮之外的所有元素,您可以尝试:

$("#myForm").children("input[type=text]").each(function(){
    // Do stuff here..
});
于 2013-06-24T20:09:42.267 回答