【问题标题】:Check form for similar value before submit提交前检查表单是否有相似值
【发布时间】:2015-04-23 01:25:40
【问题描述】:

是否有办法检查输入框中是否存在类似的值

前:

<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 进行比较

【问题讨论】:

  • 你使用的是 php 还是 javascript???,你可以在其中任何一个中使用 if 语句... if(item 1 == item2) { then alert something }
  • 我不知道你为什么需要这个表格。目的是什么?
  • @YauheniLeichanok for(var counter = 1; counter
  • @lv0gun9 创建多个用户,这些用户应该是彼此唯一的。
  • @link 我看到了,但问题不太确定该过程的目的是什么......

标签: jquery html forms validation input


【解决方案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()
})

【讨论】:

    猜你喜欢
    • 2016-12-08
    • 2011-12-04
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    相关资源
    最近更新 更多