使用jQuery基于查询字符串自动完成字段

时间:2017-05-17 18:35:27

标签: javascript jquery

我有一个脚本,test.php使用以下HTML& jQuery的。

基本上,如果用户加载此脚本,我想用随机字符串填充输入字段。

但是,如果用户访问了test.php?id=类型的网址,我不想填充此字段。

我如何使用现有代码执行此操作?

目前,当我运行下面的代码时,它会给我这个错误:

Uncaught ReferenceError: key is not defined at test.php:28

<input id="input_1_8" name="input_1_8" value="">

<script
  src="https://code.jquery.com/jquery-3.2.1.js"
  integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
  crossorigin="anonymous"></script>

<script type="text/javascript">

function makeid()
{
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for( var i=0; i < 5; i++ )
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
}


var urlParams = new URLSearchParams(window.location.search);
var keys = urlParams.keys();
for (key of keys) {}
setTimeout(function() {
    if (null === key) { // here is where I get my error!!
    } else {
        $('#input_1_8').val(makeid());
    }
}, 3000);
</script>

3 个答案:

答案 0 :(得分:1)

如果查询字符串存在与否,请使用以下简单的js代码执行您想要的操作。

grep -E 'even:(suspend|hold)count>0'

希望这有帮助。

答案 1 :(得分:1)

您正在引用&#34; key&#34;在初始化的for循环之外。此外,您的for循环未正确初始化。你在循环中寻找特定的键吗?如果是这样,我会设置一个外部变量到键值,这样你就可以在超时内引用..

&#13;
&#13;
function makeid() {
  var text = "";
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

  for (var i = 0; i < 5; i++)
    text += possible.charAt(Math.floor(Math.random() * possible.length));

  return text;
}


var urlParams = new URLSearchParams(window.location.search);
var keysURL = urlParams.keys();
var keyVal = null;
for (var keyParam in keysURL) {
  // Whatever conditional here..
  if (true === true) {
    keyVal = keyParam;
    break;
  }
}
setTimeout(function() {
  if (null === keyVal) { // here is where I get my error!!

  } else {
    $('#input_1_8').val(makeid());
  }
}, 3000);
&#13;
<input id="input_1_8" name="input_1_8" value="">
<script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您的代码逻辑工作正常,但是 您没有声明关键变量 您可以输入

var key;

for (var key in keys) {}