1

就像标题说的那样,我有一个表单的提交按钮,除非文本框中有文本,否则我想禁用它。该字段已正确禁用,但在输入文本时,提交仍处于禁用状态。

这是HTML:

<form method="get" action="#">
    <input type="text" id="edit-combine" name="combined"/>
    <input type="submit" id="edit-submit-clone-of-combined-search" value="search"/>
</form>

这是jQuery:

 if($('#edit-combine').val().length == 0){
            $('#edit-submit-clone-of-combined-search').prop("disabled", true);
    }else{
        $('#edit-submit-clone-of-combined-search').prop("disabled", false);
    }

我为此做了一个 JSFiddle:http: //jsfiddle.net/CR47/ZUmCp/

4

2 回答 2

5

不幸的是 HTML/Js 不知道你的意图。因此,您需要通过将您的逻辑附加到绑定到文本框的事件处理程序来帮助他们,就像您的案例中的 keyup 事件一样。

$('#edit-combine').on("keyup", function () {
      $('#edit-submit-clone-of-combined-search')
                    .prop("disabled", 
                            $('#edit-combine').val().length == 0);
}).keyup();

演示

值得一看:

键位

改变

于 2013-06-09T03:20:22.617 回答
0

您的起始状态取决于文本框中是否存在文本。之后,您可以通过根据文本框中文本的存在来更改其状态来响应文本框上的更改事件。您未能将代码附加到文本框的更改事件。

正如其他发帖者所说,您不应该响应 keyup 事件,因为用户可以使用鼠标将值粘贴到您的文本框中。响应变化事件,一切都会朝着最好的方向发展。相信我,我是专业的:)

于 2013-06-09T03:21:05.163 回答