Перебрать все текстовые поля внутри таблицы и проверить значение - PullRequest
5 голосов
/ 31 августа 2010

У меня есть таблица, которая содержит два текстовых поля (textbox1, textbox2).Оба текстовых поля являются обязательными.Если я не введу значение в textbox1 и не введу значение textbox2, или наоборот, я получу сообщение об ошибке.Как мы можем достичь этого с помощью jQuery?

Ответы [ 5 ]

11 голосов
/ 31 августа 2010

Самый простой способ, который я нашел, это добавить класс к вашему текстовому полю, например 'requiredField'.

<input type="text" class="requiredField" />

Затем вы можете получить все необходимые поля в таблице, используя функцию 'find'.

textboxes = $('#tableid').find('.requiredField');

, а затем перебрать их, используя функцию 'each'

textboxes.each(function() {
    if(this.value.length==0){
        //do something here
    }
}

Подобным образом я обычно окрашиваю текстовое поле в красный цвет и добавляю предупреждение, сообщающее пользователю, что он должен заполнить все обязательные поля.

Вот окончательный код.

requiredFields = $('#tableid').find('.requiredField');
var allFieldsComplete = true;
requiredFields.each(function(index) {
    if (this.value.length == 0) {
        $(this).addClass('requiredIncomplete');
        allFieldsComplete = false;
    } else {
        $(this).removeClass('requiredIncomplete');
    }
});
if(!allFieldsComplete){
    alert('Please complete all required fields');
}
return allFieldsComplete;

Вам также необходимо указать стиль 'requiredIncomplete' в вашем CSS. Для этого нужно проверить все текстовые поля в таблице, чтобы увидеть, содержат ли они данные. Если текстовое поле не содержит данных, оно добавляет к нему класс requiredIncomplete (который содержит некоторые стили, позволяющие отделить его от других текстовых полей), в противном случае класс удаляется. Затем он вернет true, если все поля содержат данные, или false, если в одном из них отсутствуют данные.

4 голосов
/ 31 августа 2010
// create a custom jQuery expression filter, called :hasValue
jQuery.expr[':'].hasValue = function(elem, index, match) {
    return jQuery(elem).val() !== '';
};

// textbox logic
if($('table textbox:hasValue').length !== 2) {
  alert('error message');
}
3 голосов
/ 31 августа 2010
$("[id^=textboxid]").each(function(){               
    if ($(this).val().length > 0) {
      // do something alert ...
       }                
    }
);

это выполняется для всех текстовых полей, для которых идентификатор начинается с textboxid, например textboxid1, textboxid2 ...

1 голос
/ 31 августа 2010

Предполагая, что у вас действительно есть форма, и вы хотели бы, чтобы эта проверка происходила при отправке формы, прежде всего, добавьте в ваше предупреждающее сообщение:

<p class="warning">Both textboxes need to be filled</p>

Затем добавьте следующий Javascript

$('form').submit(function(){
  var inputValid = true;

  $('form textarea').each(function(){
    if(!this.value){
      $('.warning').show();
      return false;
    }
  });
});

Это при отправке формы циклически повторяет все textearea с и отображает сообщение об ошибке, а также отменяет отправку формы, если любой из textarea с в Форма не заполнена.

0 голосов
/ 14 июня 2013
Table Table1 = new Table(mainShell,SWT.BORDER);
    Table1.setHeaderVisible(true);
    Table1.setLinesVisible(true);
    TableColumn tc1 = new TableColumn(Table1,SWT.NONE);
    tc1.setText("Item");
    tc1.setWidth(100);
    TableColumn tc2 = new TableColumn(Table1,SWT.NONE);
    tc2.setText("Value");
    tc2.setWidth(120);
    TableItem item1 = new TableItem(Table1,SWT.NONE);
    item1.setText(0, "hahaha");
    item1.setText(1, "haha");
    Table1.setBounds(9, 174, 228, 128);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...