2013-08-28 2 views
1

Я видел множество примеров отключения людей кнопками, если текстовые поля пустые, но я не нашел ни одного, который отключит кнопку только для определенных текстовых полей. Я новичок в JQuery, и я знаю, что это псевдокодировано, но вы можете получить эту идею. Какую функцию JQuery мне нужно вызвать, чтобы она постоянно проверялась? И как я могу использовать оператор or в предложении if, чтобы определить, пусто ли поле текстового поля?JQuery, если определенные текстовые поля пусты, отключить кнопку

if($('#txtEvent').val.length === 0 || $("#txtID").val.length === 0) 
{ 
    $('#btnSave').attr("disabled", "disabled"); 
} 
else 
{ 
    $('#btnSave').attr("enabled", "enabled"); 
} 

Form Controls

<asp:TextBox ID="txtEvent" runat="server"></asp:TextBox> 
< asp:TextBox ID="txtID" runat="server"></asp:TextBox> 
<asp:Button ID="btnSave" runat="server"" Text="Save and Next" /> 
+1

'.val()' вместо '.val' – Diryboy

+0

Если только эти два входа в йо ur, вы можете использовать '$ ('input: text: empty'). length> 0' – Bigxiang

+0

Если имеется более двух текстовых полей, вы можете захотеть добавить класс во все эти текстовые поля, и этот класс можно использовать как селектор JQUERY с решением @Aruns – Nilesh

ответ

3

Вы можете сделать это двумя способами:

if (!$("#txtEvent").val()) { //undefined will yield false 
//call a method! .val() not .val 
    $("#btnSave").attr("disabled", "disabled"); 
} else { 
    $("#btnSave").attr("enabled", "enabled"); 
} 

Или:

if ($("#txtEvent").length > 0) { 
    $("#btnSave").attr("disabled", "disabled"); 
} else { 
    $("#btnSave").attr("enabled", "enabled"); 
} 

Если вы хотите, они постоянно бегают, завернуть их в :

$("#txtEvent").on("change", function() { //code }); 
//using the onchange event will trigger the code whenever the txtbox changes. 
//you can also use onblur if you want it to trigger AFTER the txtbox loses focus 

Обратите внимание, что вам нужно будет преобразовать их в правильный код asp! Это просто логистический ответ.

+0

Хорошо большое спасибо за ввод, как я могу проверить, являются ли несколько текстовых полей нулевыми и в свою очередь многократными функциями изменения – CSharper

+0

с jquery, вы можете выбрать несколько, добавив запятую между идентификаторами или селекторами классов. Исходя из этих условий, отключите все. Это может быть много, если статусы, если вы каждый раз отключите разные кнопки, если это не может быть сделано в 1 с несколькими селекторами jquery. –

0

Попробуйте

var $empties = $('#txtEvent, #txtID').filter(function(){ 
    return $.trim($(this).val()).length == 0 
}) 

$('#btnSave').prop("disabled", $empties.length === 0); 
0

Несмотря на то, что это два года вопрос, я хотел бы показать другой путь, используя bind. Смотрите текст 'keyup mouseup cut paste'

Это также будет работать, если вы вырезать или паста текст, а также ввод с клавиатуры. Также это будет работать, если мы нажмем маленький крестик в текстовом поле, чтобы очистить текст (используя mouseup).

enter image description here

OP заявил, что отключить кнопку "только для определенных текстовых полей". Скажем, мы имеем следующие текстовые поля

<input type="text" name="tbox1" id="txtbox1" /> 
<input type="text" name="tbox2" id="txtbox2" /> 
<input type="text" name="tbox3" id="txtbox3" /> 
<input type="text" name="tbox4" id="txtbox4" /> 
<input type="submit" id="btnSubmit" name="button" value="Save and Next" disabled /> 

Если нам нужно, чтобы включить/отключить кнопку на основе значений, введенных в к txtBox1 ИЛИ txtBox3, то мы можем использовать этот

<script> 
    $(document).ready(function() { 

     $("#txtbox1, #txtbox3").bind('keyup mouseup cut paste', function() { 
      var txt = $(this); 
      setTimeout(function() { 
       $('#btnSubmit').prop('disabled', $(txt).val() == ''); 
      }, 100); 
     }); 
    }); 
</script> 

Если нам нужно, чтобы включить/отключить кнопку только тогда, когда обе txtBox1 И txtBox3 не пусто, то мы можем использовать этот

<script> 
    $(document).ready(function() { 
     $("#txtbox1, #txtbox3").bind('keyup mouseup cut paste', function() { 
     setTimeout(function() { 
      ($('#txtbox1').val() && $('#txtbox3').val()) ? $('#btnSubmit').prop('disabled', false) : $('#btnSubmit').prop('disabled', true); 
     }, 100); 
     }); 
    }); 
</script> 
Смежные вопросы