如何将内容附加到输入元素?

时间:2013-02-26 22:09:36

标签: jquery html5

我正在学习jQuery,并且我已经能够使用以下代码:

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js" charset="utf-8"></script>
</head>
<body>
  <header>
      <h1></h1>
  </header>
  <form name="myForm" method="GET" action="">
Text Field Populated With XML Value.</br>
<input type="text" id="text1" name="text1" />
      </br></br>
Dropdown Populated With XML Data.</br>
      <select id="cdLDAP">
        <option/>
      </select>
  </form>
  </div>
  <script type="text/javascript">

  // variables declaration
    var XML_PATH = "XML/ou.xml";   
    // load XML file
    $(function() {
      $.ajax({
        type: "GET",
        url: XML_PATH,
        dataType: "xml",
        success: function(xml) {
          $(xml).find('LDAP').find('OU').each(function(i) {
            var ou = $(this).text();
            $('#cdLDAP').append("<option class='ddheader'>"+ou+"</option>");
          });
          $(this).find('Name').each(function() {
            var name = $(this).text();
            $('#cdLDAP').append("<option class='ddindent' value='"+ name +"'>"+name+"</option>");
          });
        }
      });
    });    
  </script>
</body>    
</html>

这很有效;它能够读取以下XML:

<?xml version= "1.0" encoding="UTF-8"?>
<DropDown>
    <LDAP>
        <OU>1</OU>
        <OU>2</OU>
        <OU>3</OU>
        <OU>4</OU>
        <OU>5</OU>
        <OU>6</OU>
        <OU>7</OU>
    </LDAP>
</DropDown>

它在下拉列表cdLDAP中显示值1,2,3,4,5,6,7没有问题。

到目前为止一切顺利。

我遇到的问题是填充一个简单的文本文件......在这种情况下:

<input type="text" id="text1" name="text1" />

假设我只想要xml文件中的第一个值,即:

中的“1”
        <OU>1</OU>

将显示在HTML5表单的文本字段中。我怎么做?我尝试过的任何东西似乎都没有用。我认为我对.each部分感到困惑,就像在.each(function(i)中一样,以及为

添加什么
$('#text1').append(

2 个答案:

答案 0 :(得分:1)

输入元素与其他HTML元素的行为略有不同。您需要修改元素的value属性,而不是尝试将值插入其HTML中。

这可以使用jQuery完成:

$('#text1').val(...)

或只是普通的旧DOM属性重新分配:

$('#text1')[0].value = ...

答案 1 :(得分:0)

如果您希望将value #text1设置为第一个OU值,则可以使用.index()方法确定哪个:eq存在。请记住.index()0 based values所以我们会寻找$('OU:eq(0)')

$(xml).find('LDAP').find('OU').each(function(i) {
    var ou = $(this).text();
    if($(this).index()==0){
        $('#text1').val(ou)
    }
    $('#cdLDAP').append("<option class='ddheader'>"+ou+"</option>");
});

或者您可以使用:

success: function(xml) {
    $('#text1').val( $(xml).find('LDAP').find('OU:eq(0)').text() )
    // rest of code
}