我在html中有一个文本输入,受到来自不同无线电和复选框的.change()
事件所引发的功能的影响。我试图这样做,以便如果用户键入输入,当上述无线电和复选框中发生.change()
事件时,此功能将不再运行(用户仍必须能够使用这些无线电和复选框)。但是,如果用户将输入留空并单击,则脚本将再次运行。我希望是可能的。
到目前为止,我对此采取了以下措施:
使用.prop('diabled'
是不可行的,因为它完全禁用输入,使用户无法输入,所以我需要另一种解决方案。
$(function() {
$('#burger-navn').on('input', function() {
$("#burger-navn").prop('disabled', true);
});
//When the input (#burger-navn) is typed into it should be "disabled"
$('#burger-navn').focusout(function() {
if ($(this).val().length == 0) {
$("#burger-navn").prop('disabled', false);
}
});
//But if its clicked out of while its blank, it should be able to run again.
$("#okseinput, #laksinput, #kyllinginput, #vegetarinput").change(function() {
if (!$("#burger-navn").not(':disabled')) { //condition that tests
navngenerator();
}
});
});
答案 0 :(得分:0)
要解决此问题,我只需创建一个单独的输入标记,我可以添加和删除已禁用的属性,并检查它是否具有该属性。 所以在html:
<input id="burger-navn" type="text"/>
<input id="toggle" disabled="disabled" style="display:none"/>
jQuery的:
var previousValue = $("#burger-navn").val();
$("#burger-navn").keyup(function(e) {
var currentValue = $(this).val();
if(currentValue != previousValue) {
previousValue = currentValue;
$("#toggle").prop('disabled', false);
}//This function will remove disabled from #toggle, when a user types into #burger-navn
});
$('#burger-navn').focusout(function() {
if ($(this).val().length == 0) {
$("#toggle").prop('disabled', true);
}
});
if ($("#toggle").is(':disabled')) {
navngenerator();
}
$("#okseinput, #laksinput, #kyllinginput, #vegetarinput").change(function() {
if ($("#toggle").is(':disabled')) {
navngenerator();
}
});
答案 1 :(得分:-1)
$(selector).on('change', function(event){
event.preventDefault();
event.stopPropagation();
// the selected field no longer does anything on change
});
是你在寻找什么?