仅获取输入类型文本而不是选择器字段

时间:2015-12-02 04:16:43

标签: javascript jquery html

'<tr>
<td class="label" width="40%"> Business Unit Code </td>
<td class='inputField">
<input type="text" value name="attribute1" size="20" readonly     maxLength="25">"&nbsp;"
<input class="button" name="button1" type ="button" size="200" value=".." alt="..." onclick="function1{};">
</td>
</tr>
<tr>
<td class="label" width ="40%" >style</td>
<td class="inputField">
<select name="attribute2">
<option selected value></option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
</tr>
<tr>
<td class="label" width="40%"> car line </td>
<td class='inputField">
<input type="text" name="attribute3" size="null" value>
</td>
</tr>`

在ablove代码中,我想只获取输入字段“attribute3”。如果我正在尝试使用javascript“document.getElementsByClassName('inputfield')”它将获取attribute1和attribute3。但我希望attribute3的值验证值。 请提供javascript验证码。

5 个答案:

答案 0 :(得分:2)

您可以使用 getElementsByName

var x = document.getElementsByName("attribute3");
  

请注意,它返回一个NodeList对象,表示一个   具有指定名称的元素的集合。中的元素   返回的集合按源代码中的显示进行排序。因此,如果您想验证其值,则可能需要执行document.getElementsByName("attribute3")[0].value

因此,如果您将id提交给elements并使用getElementById返回单element作为id,我会建议您这样做会很好在DOM

中是唯一的

<强>更新

要使所有input type=text元素使用 document.querySelectorAll

对于Ex:

var nodes = document.querySelectorAll("#yourformid input[type=text]");
for (var i=0; i<nodes.length; i++)
{
    //get the value using nodes[i].value
}

答案 1 :(得分:2)

根据评论@Guruprasad Rao,您需要所有输入文本字段。

在JavaScript中,你可以这样做:

var inputs = document.getElementsByTagName('input');

for(var i = 0; i < inputs.length; i++) {
    if(inputs[i].type.toLowerCase() == 'text') {
        console.log(inputs[i].value);
    }
}

在Jquery中你可以做到:

$("input:text")

答案 2 :(得分:1)

Selector:  document.querySelectorAll('[name="attribute3"]')
  Value : document.querySelectorAll('[name="attribute3"]')[0].value

答案 3 :(得分:0)

如果您需要纯JavaScript,可以考虑以下内容:

//<![CDATA[
var pre = onload;
onload = function(){
if(pre)pre();

var doc = document, bod = doc.body;
function E(id){
  return doc.getElementById(id);
}
function N(name, element){
  var e = element || doc;
  return e.getElementsByName(name);
}
function cN(className, element){
  var e = element || doc;
  if(e.getElementsByClassName){
    return e.getElementsByClassName(className);
  }
  else{
    var x = e.getElementsByTagName('*'), a = [];
    for(var i=0,l=x.length; i<l; i++){
      var t = x[i];
      if(t.className === className){
        a.push(t);
      }
      return a;
    }
    return false;
  }
}
/* console.log(N('attribute3')[0].value);
  or
   console.log(cN('inputField')[2].firstChild.value);
*/
}
//]]>

当然,第二个评论console.log取决于您的.firstChild是否真的是元素,而不是文本节点。

如果您希望表单上的每个文本元素的值,使用上面的代码,您可以这样做:

function getTextInputVals(formElement){
  var els = formElement.elements, a = [];
  for(var i=0,l=els.length; i<l; i++){
    var e = els[i];
    if(e.type === 'text'){
      a.push(e.value);
    }
  }
  return a;
}
// console.log(getTextInputVals(doc.form[0]));

答案 4 :(得分:0)

我已经尝试了以下方法并且它有效..谢谢快速回复

function analyseFreetextField() {
    var fieldValue = "";
    var fieldName = "";
    var inp = document.getElementsByTagName('td');
    for (var i = 0; i < inp.length; i ++) {
        if (inp[i].className == 'inputField') {
            if (inp[i].childElementCount == 1 && inp[i].firstElementChild.type == 'text' ) {
               fieldName = inp[i].firstElementChild.name;
               fieldValue = inp[i].firstElementChild.value;
               if (!alphanumeric(fieldValue)) {
                   alert('Invalid value detected' + fieldValue);
               }
           }
       }
    }
}