2013-12-10 4 views
1

У меня есть поле ввода текста, которое автоматически устанавливается для пользователя с помощью ajax/php. Хотя пользователю разрешено вводить любую запись, я хотел бы предупредить пользователя, если они попытаются ввести значение, которое еще не было ранее.jquery validation engine - проверить достоверность json list

<input type="text" id="customerName" size="50" class="validate[required]" /> 
<input type="hidden" id="customerid"/> 

Теперь у меня есть автомобиль полностью против этого поля:

$("#customerName").autocomplete({ 
    source: function (request,response) { 
     $.ajax({ 
      url: 'getData.php?f=c&s=112', 
      dataType: 'json', 
      data: { 
       term: request.term, 
       country: $("#country").val() 
      }, 
      success: function (data) { 
       response(data) 
      } 
     }) 
    }, 
    minLength: 2, 
    delay: 0, 
    dataType: 'json', 
    select: function(event, ui) { 
     $("#customerid").val(ui.item.id); 
    } 
}); 

Я попытался с помощью размытия(), но это уходит слишком много случаев, поэтому я решил, я бы прикрепить к крючку Validation двигателя и проверьте, чтобы проверить, какое поле тестируется, и поэтому я могу проверить, не введен ли пользователь что-то новое или нет, если клиентский клиент пуст или нет.

form.bind('jqv.field.result', function(event, field, errorFound, promptText) { 
    console.log('event = ' + event.toSource()); 
    console.log('field = ' + field.toSource()); 
    console.log('errorFound = ' + errorFound); 
    console.log('promptText = ' + promptText); 

Я не могу понять, как проверить параметр поля, чтобы узнать, находится ли я в нужном месте или нет.

Если вы можете думать о более легком/другом методе, не стесняйтесь публиковать сообщения, это была моя первоначальная идея.

+0

Необходимо закрыть с помощью цитат '$ (" # customerid "). Val (ui.item.id);' –

+0

Это просто опечатка, я не нарезал-n-paste. – awm

ответ

0

Думаю, мне просто нужен был хороший ночной сон. Это довольно простое решение:

form.bind('jqv.field.result', function(event, field, errorFound, promptText) { 
    if (!errorFound) 
     if (field.attr('name') === .... 

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

Смежные вопросы