JavaScript检查基于变量值的字段值

时间:2010-04-21 07:56:51

标签: javascript jquery

我有一个像这样的锚:

<a href="#" rel="1 4 7 18 ">Anchor</a>

其中'rel'属性值是某些项目的ID 我有一个带输入的表单,用户应键入id并单击提交按钮 在提交按钮单击我需要检查输入的值如下:

var value = $('a').attr('rel'); // get anchor 'rel' ids
var uservalue = $('input[type='text']').val();
if ( uservalue == '1' || uservalue == '4' || uservalue == '7' || uservalue == '18') {
// however I need the line above are created dynamically based on 'value' var
  alert('The id exists');
  return false;
} else {
  return true;
}

那么,问题是如何根据锚'rel'属性值动态创建一条线?!
这是一行:

if ( value == '1' || value == '4' || value == '7' || value == '18') {

4 个答案:

答案 0 :(得分:1)

您可以从原始rel值创建一个值数组,然后使用inArray()方法检查单个值是否存在:

var values = $('a').attr('rel').split(' ');
alert ($.inArray(userSubmittedValue, values));

答案 1 :(得分:1)

var values = $('a').attr('rel').split(' ');

现在你的values数组将包含所有值。循环遍历数组并进行比较。

答案 2 :(得分:0)

我自己解决了这个问题:

var value = $('a').attr('rel'); // get anchor 'rel' ids
var uservalue = $('input[type='text']').val();

if ( value.match(uservalue) ) {
  alert('The id exists');
  return false;
} else {
  return true;
}

只需要设置一个匹配函数。
匹配函数匹配字符串的任何结果,而不是相等的结果。

value.match(uservalue)

上面的行产生以下内容:在值变量中搜索任何用户值并匹配它。

工作示例放在此处:http://jsfiddle.net/nYVX4/

答案 3 :(得分:0)

var uservalue = $('input:text').val();

if ($('a[rel~="' + uservalue + '"]').length > 0) {
    alert('The id exists');
    return false;
} else {
    return true;
}

更多:http://api.jquery.com/attribute-contains-word-selector/