将li标记值传递给文本输入

时间:2010-12-10 22:05:28

标签: javascript jquery html

喜 我有一个li标签如下:

<li value="myLi" class="myLi">My element</li>

我尝试了这个jquery代码:

$(".myLi").click(function(){
    document.getElementById("mytext").value=$(this).value;
});

知道mytext是文本类型的输入,如何将li标签的值传递给输入,如果不可能,我如何使用innerHTML在li标签之间传递代码

我尝试的代码不起作用 谢谢

5 个答案:

答案 0 :(得分:3)

AFAIK value不是li元素的有效属性。不完全正确,请参阅@T.J. Crowder's answer
 您可以使用rel

<li rel="myLi" class="myLi">My element</li>

要设置输入元素的值,请使用val()

$(".myLi").click(function(){
    $("#mytext").val($(this).attr('rel'));
});

如果您想要从li元素获取文字,请使用$(this).text()

参考:attrtext

答案 1 :(得分:3)

尽管有人说过,value确实是li元素的有效属性,它反映在value属性中,但它必须是整数< / em>(reference):

  

value属性(如果存在)必须是一个有效的整数,给出列表项的序数值。   
...   
如果存在value属性,则用户代理必须将其解析为整数,以便确定属性的值。如果属性的值无法转换为数字,则必须将该属性视为不存在。该属性没有默认值。

如果您的粘贴代码只是一个快速编辑而且您确实将使用整数,那么如果没有在{jQuery实例中包装this,您的代码就会起作用:< / p>

HTML:

<li value="3" class="myLi">My element</li>

使用jQuery的JavaScript:

$(".myLi").click(function(){
    document.getElementById('myText').value=this.value;
    // Or
    // $('#myText').attr('value', this.value);
});

如果您想使用字符串,最好坚持使用新的HTML5 data- prefix

HTML:

<li data-value="myLi" class="myLi">My element</li>

使用jQuery的JavaScript:

$(".myLi").click(function(){
    document.getElementById('myText').value=$(this).attr('data-value');
    // Or
    // $('#myText').attr('value', $(this).attr('data-value'));
});

答案 2 :(得分:2)

尝试以下

$(".myLi").click(function() {
  $("#myText").val($(this).text());
});

答案 3 :(得分:1)

我认为你想要的是:

$(".myLi").click(function(){
    $('#mytext').val($(this).text());
});

以下是一个演示:http://jsfiddle.net/Ender/QdWxH/

或者如果你想要那个值属性的val:正如Felix指出的那样,value不是<li>的有效属性。(参见@TJ Crowder的答案)你可以改变那到data-value,就像这样:

<li data-value="myLi" class="myLi">My element</li>

然后这样做:

$(".myLi").click(function(){
    $('#mytext').val($(this).data('value'));
});

演示:http://jsfiddle.net/Ender/BHrmR/

答案 4 :(得分:0)

您可以快速轻松地使用全局属性'title'。

<li title="myLi" class="myLi">My element</li>

然后

$(".myLi").click(function(){
    document.getElementById('myText').value=this.attr('title');
});

希望得到这个帮助。