2012-03-16 6 views
0

나는 선택한 옵션의 가격으로 선택하면 텍스트 필드도 업데이트하는 선택 필드가 있습니다. 이 아이디어가 효과가없는 이유에 대한 아이디어가 있습니까?선택한 선택 옵션에서 텍스트 입력 업데이트

HTML :

<label for="material1" class="select">Material:</label> 
<select name="material" id="material1" data-native-menu="false" rel="price1"> 
<option>Select Material</option> 
<option value="55 Bolt" rel="125,000.00">55 Bolt</option> 
</select> 
<label for="net1">Net Price:</label> 
<input type="text" name="net" id="net1" rel="price1" value="" /> 

JS :

<script type="text/javascript"> 
$("material1").change(function() { 
    $(this).next("input[rel="+$(this).attr("rel")+"]").val($(this).val()); 
    $('#net1').textinput('refresh'); 

}).change(); 
</script> 

답변

1

여기에 주요 문제가 있으며 mgoeppner에도 좋은 제안이 있습니다.

$(this).next("input[rel="+$(this).attr("rel")+"]").val($(this).val()); 

$(this).val()는 널 select의 값을 말한다. 선택한 옵션의 값을 참조해야합니다. 그러면 옆에 input이 없기 때문에 next()이 작동하지 않습니다. 그 사이에 label이 있습니다. 당신이 JQuery와 모바일입니다 closest()

var value = $(this).find('option:selected').val(); 
$(this).closest("input[rel="+$(this).attr("rel")+"]").val(value); 
+0

이 문제를 해결했지만 진행하지 않으셨습니까? –

+0

나는이 옵션을 jsfiddle jsfiddle.net/7dSZm에 추가했는데 두 옵션 모두 작동하지 않는 것 같습니까? - –

+0

당신은 거기에 몇 가지 구문 오류가 있고 내 예제가 작동한다면 http://jsfiddle.net/elclanrs/7dSZm/2/ – elclanrs

1

그것은 몇 가지 이유에 대해 작동하지 않습니다 :

  1. $(this).next()은 다음 형제 이후 []를 반환합니다 <label>가 아닌 일치하는 rel 속성을 가진 입력. 대신 $(this).siblings("input[rel="+$(this).attr("rel")+"]")을 사용해보세요.

  2. jQuery API에는 textinput() 함수가 없습니다. 아마도 text()을 의미할까요? $(...).change(function()...) 충분합니다 -

마지막으로, 당신은 $(...).change(function()...).change() 할 필요가 없습니다.

+0

사용할 수 있습니다, 새로 고침은 양식 필드의 상단에 CSS 클래스를 사용할 때 필드를 업데이트하는 자신의 코드 호출 무언가이다. 레이블은 코드의 일부이기도합니다. 나는 당신의 제안을 시도하고 무슨 일이 일어날지를 볼 것입니다. –

+0

아직 안돼, 여기 내가 무슨 짓을 한거야 : $ (this) .siblings ("입력 [rel ="+ $ this ".attr ("rel ") +"] "). val ($ (this) .val()); –

+0

과 나는 시도했다 : $ (this) .siblings ("input [rel ="+ $ this ".attr ("rel ") +"] "); –

관련 문제