2012-01-04 2 views
1

양식의 사용자 선택에 따라 버튼 (제출)의 데이터 확인 속성 값을 변경하고 싶습니다.데이터 확인 값을 대체합니다.

... 
    if($("#"+select_name).val() == "abc") 
    { 
     $(".variable_button").attr("data-confirm","abc is good choice!"); 

    } else 
    { 
     $(".variable_button").attr("data-confirm","abc would have been great but this is fine too..."); 
    } 
... 

내가 직면하고 문제가 아닌 빈 문자열을 할당하면 분명히 데이터 확인이 변경 될 수 없다는 것입니다 : 나는 드롭 다운 목록의 변경 기능에 다음을 넣어. 서버 코드에서 ""설정했습니다. 그리고 사용자가 처음에 드롭 다운 목록을 선택할 때 위에 표시된 두 메시지 중 하나로 변경됩니다. 그러나 사용자가 한 번 더 선택을 변경하면 데이터 확인 메시지가 변경되지 않습니다. 디자인 당입니까, 아니면 뭔가 빠졌습니까?

+0

'data-confirm' 속성은 메시지 저장에 사용하는 사용자 정의'data-'속성입니다. 맞습니까? –

+0

조쉬 - 예, 맞습니다. – Tabrez

답변

3

.attr()를 사용 .data()를 사용하지 마십시오 :

var newData = ($("#"+select_name).val() == "abc") 
    ? "abc is good choice!" 
    : "abc would have been great but this is fine too..."; 

$(".variable_button").data("confirm", newData); 
+0

이것은'.attr()'을 사용하는 것보다 깔끔하지만 두 가지 모두 동작해야합니다. –

+0

감사합니다. Matt! Josh - 왜 .attr()이 작동하지 않는 지 잘 모르겠습니다. 하지만 두 가지 방법으로 시도했는데 .data() 메서드는 문제없이 작동했습니다. .attr() 메서드를 사용하면 값을 빈 문자열에서 무언가 (한 번)로만 변경할 수 있었으며 더 이상 변경하지 않았습니다. – Tabrez

0

jQuery를 당신이 .attr() 방법과 data- 속성을 업데이트 할 수 않기 때문에 뭔가 다른 파괴된다.

var counter = 1; 

$('#click').click(function() { 
    button = $('#click'); 
    console.log(button.attr('data-confirm')); 
    button.attr('data-confirm', 'this is test ' + counter); 
    console.log(button.attr('data-confirm')); 
    counter++; 
}); 

당신이 JSFiddle에 문제를 REPO를 시도 할 수 있습니다 : 여기

는 작업 예 (JSFiddle)입니까?

질문을 다시 읽으면 두 번째 사용자가 선택 항목을 변경하면 이벤트 처리기가 실행되지 않는 것처럼 들립니다. 이벤트 처리기에 중단 점을 설정하여 충돌이 발생하는지 확인하십시오.