2014-11-26 3 views
1
를 사용하여 업데이트 한 후 널집니다

그래서 난이 이상한 문제가 있습니다 <select> 값은 jQuery를

내가 클래스 "Menu_DDL"와 선택 요소가 있습니다.

는 내가 jQuery를 UI .selectmenu()에 다음과 같은 방법을 설정 :

$(".Menu_DDL").selectmenu({ 
    width: "100%", 
    change: function (event, ui) { 
     event.preventDefault(); 
    } 
}); 

지금 내가 프로그래밍 방식으로 값을 업데이트해야합니다,하지만의 선택 값은 변경되지 않습니다

var temp_email = $(this).attr("MID"); 
    console.log(temp_email); 
    console.log("was: " + edit_email_template_dialog.find(".Menu_DDL").val()); 
edit_email_template_dialog.find(".Menu_DDL").val(temp_email); 
    console.log("now: " + edit_email_template_dialog.find(".Menu_DDL").val()); 
edit_email_template_dialog.find(".Menu_DDL").selectmenu("refresh", true); 
    console.log("refreshed"); 
edit_email_template_dialog.attr("TID", $(this).parents(".TR_Record").attr("TID")); 
edit_email_template_dialog.dialog("open"); 

로그에서 위의 내용을 반환하십시오.

"49" 
"was: 23" 
"now: null" 
"refreshed" 

위의 값을 보면가됩니다.업데이트를 시도한 후. 이상한 부분은 콘솔을 통해 같은 코드를 실행하면, 예를 들어 edit_email_template_dialog.find(".Menu_DDL").val("49");이 잘 동작한다는 것입니다.

나는 무엇이 실종 되었습니까?

+0

'edit_email_template_dialog.find (". Menu_DDL"). length'도 로깅하십시오. 이 문제를 해결할 데모를 공유 할 수 있습니까? –

+0

길이는 "1"을 기록합니다. 모든 것은 asp.net에 의해 렌더링되고 있습니다, 나는 초 안에 포스트 렌더링 된 바이올린을 만들 것입니다. – Banana

+0

나는 이것에 대해 내 마음을 감쌀 수 없으며, 완벽하게 [** Fiddle **] (http : // jsfiddle. net/TheBanana/6fjy88w2 /)하지만 내 웹 사이트에는 없습니다 ... – Banana

답변

1

때로는 선택 메뉴의 값을 설정해야하며 적절한 옵션에 값 속성에서 찾을 값이 있거나 .text()이있을 수 있습니다. 또한, 모든 소문자 만들기 등 공간 및 인쇄 디버깅 메모를 제거 할 수 있습니다

// assuming var myValue is the value we're looking for 
$(".menu option").each(function(){ 
    if ($(this).val() == myValue || $(this).text() == myValue) { 
     $(".menu").val($(this).val()); 
    } 
}); 

:

// assuming var myValue is the value we're looking for 
myValue = myValue.toLowerCase().replace(/ /g, ""); 
var currentValue; 
var currentText; 
$(".menu option").each(function(){ 
    currentValue = $(this).val().toLowerCase().replace(/ /g, ""); 
    currentText = $(this).text().toLowerCase().replace(/ /g, ""); 
    console.log("checking if '" + currentValue + "' == '" + myValue + "' OR if '" + currentText + "' == '" + myValue + "'"); 
    if (currentValue == myValue || currentText == myValue) { 
     console.log(" ... match found, setting value"); 
     $(".menu").val($(this).val()); 
    } 
}); 

디버깅을 예를 들어 value 속성과 .text()을 확인 각 각 옵션을 통해 그래서 루프, 메모도 나에게 도움이되었습니다. 매번 나는 매치를 찾지 못한다고 생각하는 상황을 발견하지만, 그것이 발견되었다 ("일치하는 발견"이라는 고지가 인쇄되었다). 그 덕분에 나중에 동일한 스크립트의 일부 코드가 메뉴의 값을 재설정하고 있음을 알 수있었습니다.