提交前检查表单是否有类似的值

时间:2015-04-23 01:25:41

标签: jquery html forms validation input

无论如何都要检查输入框中是否存在类似的值

EX:

<form>
  USER 1
  <input name="user1" value="bla1">
  <input name="pass1" value="ple1">
  <input name="email1" value="foo1@yy.cc">

  USER 2
  <input name="user2" value="bla2">
  <input name="pass2" value="ple1">
  <input name="email2" value="foo2@yy.cc">

  USER 3
  <input name="user3" value="bla1">
  <input name="pass3" value="pla3">
  <input name="email3" value="foo2@yy.cc">

  <button type="submit">
</form>

在提交表单时将触发验证,它将提醒用户并向具有相似值的输入添加类。所有输入字段均以空白开头,用户应输入值。所有字段只应与USER,PASS和EMAIL

类型进行比较

1 个答案:

答案 0 :(得分:1)

我为你准备了jsfiddle

基本上它只是循环遍历表单中的每个元素,查找具有相似名称的任何元素,如果它们具有相同的值,则将它们标记为两者。这有点低效,因为它将A与B进行比较,然后将B与A进行比较,但仍能正常运行。

$('form').submit(function(event) {
    var ok = true,
        $form = $(this),
        $inputs = $(this).find('input')
    $inputs.removeClass('error')
    $inputs.each(function() {
        var $src = $(this)

        //Get the name of the element, and strip off the number
        var name = $(this).attr('name').replace(/[0-9]/g,'')

        //Filter the inputs down to only the ones whose name starts the same
        $inputs.not(this).filter('[name^="' + name + '"]').each(function() {
           if($src.val() == $(this).val()) {
                ok = false
                $(this).addClass('error')
                $src.addClass('error')
            }
        })
    })
    if(!ok) event.preventDefault()
})