2

我正在寻找一种解决方案来针对由 json 文件提供的数组验证文本字段的输入。例如:在注册表中检查所需的用户名是否已经存在。

任何人都可以提供工作示例、插件、脚本或教程吗?

'usernames.json' 看起来像这样......

{"usernames":["carl","jack","jill"]}

...并与...一起读出

$.getJSON("usernames.json", function(names) {
var invalidName = names;

我会继续...

jQuery.validator.addMethod

...但从这里开始,我被困住了。

如果有人可以帮助提供一个工作示例,我将非常高兴!

///////////////////////////////////////// //

编辑:感谢 Utkanos 和 Pavel Staseljun,我可以找出以下解决方案,该解决方案仅经过粗略测试!还请在下面找到 Utkanos 的示例,因为该示例包括“keyup”处理而不是“提交”,并且不包括“必需”检查。“#errorresponse”是 div,其中可能会显示错误消息。

$.ajax({
  url: "http://yoururlto.json?callback=?",
  dataType:"jsonp",
  jsonpCallback: '?',
  async: false,
  success: function(json) {
        $('#user').keyup(function(evt) {
        var jsonarray = json.usernames;
        var userinput = $('#user').val().toLowerCase()
        var check = $.inArray(userinput, jsonarray);
        if (check !== -1) {
            $("#errorresponse").text('Thanks to Utkanos and Pavel Staseljun!');
            }
        })
      }
});
4

3 回答 3

1

HTML

<form id='signup'>
    <label>Choose a username</label>
    <input type='text' id='user' />
    <input type='submit' value='submit' />
</form>

JS/jQuery

$.getJSON("usernames.json", function(json) {
    $('#signup').on('submit', function(evt) {
        var user = $('#user').val(), error;
        if (!user)
            error = 'no username entered';
        else if (json.usernames.indexOf(user) != -1)
            error = 'username already taken';
        if (error) { evt.preventDefault(); alert(error); }
    });
});
于 2012-07-31T09:31:43.010 回答
0

为什么要将所有用户名从服务器发送到客户端?这听起来是个很糟糕的主意。请执行类似服务器端功能的操作,该功能检查发布的用户名并返回真或假以表示有效或无效?

于 2012-07-31T09:33:32.517 回答
0

你不能创建一个ajax脚本来检查用户名是否存在

更好的 imo,因为您可以使用远程选项直接将其与 jquery 验证器集成。

于 2012-07-31T09:33:42.477 回答