Javascript 基于文本值禁用复选框

Javascript 基于文本值禁用复选框,javascript,jquery,Javascript,Jquery,当用户在文本区域中输入文本时,我需要禁用复选框,否则它将处于活动状态。我已经尝试了大多数相关的活动,但我无法让它发挥作用。onkeydown在第一次按下时禁用,如果用户输入某个内容然后将其删除,onchange将起作用。在他们离开文本区域后,似乎没有任何东西可以禁用它 <script type="text/javascript"> function enable_cb(textarea) { if ($(textarea).val() != "" ) {

当用户在文本区域中输入文本时,我需要禁用复选框,否则它将处于活动状态。我已经尝试了大多数相关的活动,但我无法让它发挥作用。onkeydown在第一次按下时禁用,如果用户输入某个内容然后将其删除,onchange将起作用。在他们离开文本区域后,似乎没有任何东西可以禁用它

<script type="text/javascript">

    function enable_cb(textarea) { 
       if ($(textarea).val() != "" ) { 
        $("input.cmb").removeAttr("disabled"); 
    } 
    else { 
        $("input.cmb").attr("disabled", true); 
    } 
} 

</script>
Comments:<br />
<p><textarea name="issue" id="issue_ta" cols="50" rows="10" class="help" tabindex="2" title="Enter Detailed Description" onchange="enable_cb(this);"></textarea></p>
<p><input name="no_issue" type="checkbox" id="no_issue" class="cmb" />No Issues to Report</p>
<p class="label">Enter Current Vehicle Mileage:</p>
<p><input type="tel" name="record_mileage" class="required" tabindex="3" title="&nbsp;Enter Current Mileage&nbsp;" size="25"/></p>
<p><input type="submit" name="Submit" value="Send"/></p>
</form>

功能启用_cb(textarea){
如果($(textarea).val()!=“”){
$(“input.cmb”).removeAttr(“禁用”);
} 
否则{
$(“input.cmb”).attr(“disabled”,true);
} 
} 
评论:

无需报告的问题

输入当前车辆里程:

这个

应该是这个吗

 $("input.cmb").attr("disabled", "disabled");
“在他们离开文本区域后,似乎没有任何东西会禁用它。”


.blur
在这种情况下会很有帮助-它会检测用户何时离开元素,然后您可以应用所需的效果

移除onclick处理程序并执行以下操作:

$(function() {
    $("#issue_ta").on('change keyup', function() {
        $("input.cmb").prop("disabled", this.value.length); 
    });
});

为什么不在文本区域使用模糊事件。。这将确保在textarea失去焦点时执行代码

请尝试此代码

// Your Markup..
Comments:<br />
<p><textarea name="issue" id="issue_ta" cols="50" rows="10" class="help" tabindex="2" title="Enter Detailed Description" ></textarea></p>
<p><input name="no_issue" type="checkbox" id="no_issue" class="cmb" />No Issues to Report</p>
<p class="label">Enter Current Vehicle Mileage:</p>
<p><input type="tel" name="record_mileage" class="required" tabindex="3" title="&nbsp;Enter Current Mileage&nbsp;" size="25"/></p>
<p><input type="submit" name="Submit" value="Send"/></p>​

// Your jQuery code..
​$(function() {
    $('#issue_ta').on('blur' , function(){
       var val =  $('#issue_ta').val();
        if(val == ''){
           $('#no_issue').attr('disabled', true);                 
        }
        else{
             $('#no_issue').attr('disabled', false);    
        }
    });
});​
//您的标记。。
评论:

无需报告的问题

输入当前车辆里程:

​ //您的jQuery代码。。 ​$(功能(){ $('#issue_ta')。关于('blur',function(){ var val=$('u#issue_ta').val(); 如果(val=''){ $('no#u issue').attr('disabled',true); } 否则{ $('no#u issue').attr('disabled',false); } }); });​
您可以查看此小提琴的工作示例
谢谢大家。每一个回答都让我找到了正确的方向

    <script type="text/javascript">
 function enable_cb(textarea) {
    if ($(textarea).val() !== "") {
        $("input.cmb").prop("disabled", true);
    }
    else {
        $("input.cmb").prop("disabled", false);
    }
}
</script>

     Comments:<br />
<p><textarea name="issue" id="issue_ta" cols="50" rows="10" class="help" tabindex="2" title="Enter Detailed Description" onblur="enable_cb(this);"></textarea></p>
<p><input name="no_issue" type="checkbox" id="no_issue" class="cmb" />No Issues to Report</p>
<p class="label">Enter Current Vehicle Mileage:</p>
<p><input type="tel" name="record_mileage" class="required" tabindex="3" title="&nbsp;Enter Current Mileage&nbsp;" size="25"/></p>
<p><input type="submit" name="Submit" value="Send"/></p>
</form>​

功能启用\u cb(文本区域){
如果($(textarea).val()!=“”){
$(“input.cmb”).prop(“disabled”,true);
}
否则{
$(“input.cmb”).prop(“disabled”,false);
}
}
评论:

无需报告的问题

输入当前车辆里程:


实际上,它应该是
$(“input.cmb”).prop(“disabled”,true)有趣。我以前从未见过。感谢您的提醒。
禁用
选中
,等等都是属性而不是属性,因此prop将是正确的方法。您可以使用
prop
方法<代码>$(“input.cmb”).prop(“disabled”,true)在这里似乎运行良好,我看不出它运行正常,即使在小提琴中也是如此。这个方法似乎跟我的一样。只有在您输入一次文本,然后删除后,它才起作用。很奇怪,我是用小提琴演奏的,但不是制作的。它一定与我在该元素上的表单提示相冲突。此解决方案是迄今为止最接近的。正好相反。该复选框需要处于活动状态,只有在他们在文本区域中键入内容后,复选框才会被禁用。@macericpet-更改了它,应该是您现在想要的!
    <script type="text/javascript">
 function enable_cb(textarea) {
    if ($(textarea).val() !== "") {
        $("input.cmb").prop("disabled", true);
    }
    else {
        $("input.cmb").prop("disabled", false);
    }
}
</script>

     Comments:<br />
<p><textarea name="issue" id="issue_ta" cols="50" rows="10" class="help" tabindex="2" title="Enter Detailed Description" onblur="enable_cb(this);"></textarea></p>
<p><input name="no_issue" type="checkbox" id="no_issue" class="cmb" />No Issues to Report</p>
<p class="label">Enter Current Vehicle Mileage:</p>
<p><input type="tel" name="record_mileage" class="required" tabindex="3" title="&nbsp;Enter Current Mileage&nbsp;" size="25"/></p>
<p><input type="submit" name="Submit" value="Send"/></p>
</form>​