Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时检查表单输入数据-使用模糊或更改事件?_Javascript_Jquery_Forms_Onblur - Fatal编程技术网

Javascript 何时检查表单输入数据-使用模糊或更改事件?

Javascript 何时检查表单输入数据-使用模糊或更改事件?,javascript,jquery,forms,onblur,Javascript,Jquery,Forms,Onblur,假设我有一个这样的表格: Name:<input type="text" name="xxx" id="name"/> Type:<select> <option>xx</option> <option>xx</option> </select> <input type="submit" disabled="disabled" id="sub" />

假设我有一个这样的表格:

Name:<input type="text" name="xxx"  id="name"/>
Type:<select>
          <option>xx</option>
          <option>xx</option>
      </select>
<input type="submit" disabled="disabled" id="sub" />
但现在,在现代浏览器中,它们提供了表单数据保存和自动填充功能。因此,当用户单击输入时,浏览器将提供一个数据列表(历史数据),供用户选择(参见下图)

当用户选择其中一个时,
blur
事件无法触发。我也尝试使用
change
事件,但当用户使用keybord输入时,它会导致对服务器的请求过多

如何解决这个问题

更新:
下面的答案没有一个是完美的。现在我只需在我的页面中使用计时器,每0.5秒检查一次“名称”是否更改。它似乎满足了我的要求。

您应该做的是,当用户双击文本框时,下载选项并将它们存储在代码后面的数组中。当用户在文本框中键入时,删除不需要的项目


此外,如果您想触发模糊(位于输入元素上)之类的事件,您可能希望使用更改,甚至用于下拉列表。

您应该做的是,当用户双击文本框时,下载选项并将其存储在代码中的数组中。当用户在文本框中键入时,删除不需要的项目


另外,如果您想触发一个类似blur(位于输入元素上)的事件,您可能想使用更改,甚至对下拉列表也是如此。

简单的解决方案:在密码字段的焦点上触发ajax调用

简单的解决方案:在密码字段的焦点上启动ajax调用

我将使用的方法是在加载页面上的
中加载用户名集合,并对照
更改事件上的集合检查用户输入的数据。这样,您的数据库将只需要处理每页加载的单个请求,而前端有更多的工作要做,它不应该对您的用户体验产生负面影响


存在并发问题的可能性,两个新用户同时加载页面,选择相同的用户名并尝试提交,最后提交的用户将有一个活动的提交按钮,但用户名无效,您需要一些服务器端的东西来处理这个问题。

我将使用的方法是在加载页面上的
中加载用户名集合,并根据
更改事件上的集合检查用户输入的数据。这样,您的数据库将只需要处理每页加载的单个请求,而前端有更多的工作要做,它不应该对您的用户体验产生负面影响


存在并发问题的可能性,即两个新用户同时加载页面,选择相同的用户名并尝试提交,最后提交的用户将有一个活动的提交按钮,但用户名无效,您需要服务器端来处理此问题。

您也可以简单地添加“检查可用性”按钮并在“检查可用性”按钮的单击事件上启动用户名唯一性检查功能

Name:<input type="text" name="xxx"  id="name"/> <input type="button" name="checkUsername"  id="checkUsername" value="Check availability"/>
Type:<select>
          <option>xx</option>
          <option>xx</option>
      </select>
<input type="submit" disabled="disabled" id="sub" />

$("#checkUsername").click(function (e) {
    $.get(........);
    e.preventDefault();
    return false;
}
名称:
类型:
xx
xx
$(“#检查用户名”)。单击(函数(e){
$.get(……);
e、 预防默认值();
返回false;
}

您也可以简单地添加“检查可用性”按钮,并在“检查可用性”按钮的单击事件上启动用户名唯一性检查功能

Name:<input type="text" name="xxx"  id="name"/> <input type="button" name="checkUsername"  id="checkUsername" value="Check availability"/>
Type:<select>
          <option>xx</option>
          <option>xx</option>
      </select>
<input type="submit" disabled="disabled" id="sub" />

$("#checkUsername").click(function (e) {
    $.get(........);
    e.preventDefault();
    return false;
}
名称:
类型:
xx
xx
$(“#检查用户名”)。单击(函数(e){
$.get(……);
e、 预防默认值();
返回false;
}

很抱歉,我更新了帖子。事实上,我只有两个元素输入select。“pass”元素不存在。用户可能不需要选择select(第一个选项可能正是他想要的)。很抱歉,我更新了帖子。事实上,我只有两个元素输入select。“pass”元素不存在。并且用户可能不需要选择select(第一个选项可能正是他想要的)。抱歉,但我恐怕你没有得到我想要的。抱歉,但我恐怕你没有得到我想要的。