2017-09-10 37 views
-1

,如果我有以下代码报警的输入值onclicking与=“”属性

$('.ale').click(function(){ 
 
     var val = $('.val').val(); 
 
     alert(val); 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
    <label class='ale' for='hello'> 
 
    <input class='val' type='text' id='hello' value='Hello'> 
 
    
 
    <label class='ale' for='world'> 
 
    <input class='val' type='text' id='world' value='World'>
在这段代码中,我试图让一个脚本,警报的 value标签 input通过单击 label

,但是这是行不通的,因为它总是得到第一value = 'Hello'

哪有我定义onclick来获取其输入值id attr = for attr

回答

1

刚刚得到标签的for属性的值,并使用它找到具有相同id值的输入。

$('.ale').click(function(){ 
 
     var val = $(this).attr('for'); 
 
     alert($('#'+val).val()); 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
    <label class='ale' for='hello'>Label 1</label> 
 
    <input class='val' type='text' id='hello' value='Hello'> 
 
    
 
    <label class='ale' for='world'>Label 2</label> 
 
    <input class='val' type='text' id='world' value='World'>

+0

@AXAI固定的。在编辑时关闭标签标签。 –

0

使用$('.val')当你拿到你的代码的类val的所有实例。

使用$(this).next('input').val();

+0

你的答案假定在'label'后面有'input'元素。如果用户想要获取页面上任何输入文本字段的值,该怎么办? –

1

试试这个:

$('.ale').click(function() { 
 
    var val = $(this).next('.val').val() 
 
    alert(val) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<label class='ale' for='hello'>Label 1</label> 
 
<input class='val' type='text' id='hello' value='Hello'> 
 
    
 
<label class='ale' for='world'>Label 2</label> 
 
<input class='val' type='text' id='world' value='World'>

+0

如果下一个'.val'不存在会发生什么? – AXAI

+0

@AXAI它将返回undefined –