2017-08-31 56 views
0

我有一段salesforce visualforce頁面的代碼。爲什麼我不能在jquery中獲得這個單選按鈕的狀態?

<div id="testId" class="row mb25 mt15"> 
    <div class="col-md-6 plr0"> 
     <p class="en">Would you like to add a co-applicant?<span class="asteriskField">*</span> </p> 
     <p class="fr">Would you like to add a co-applicant?<span class="asteriskField">*</span> </p> 
    </div> 
    <div class="col-md-4 mt-5r"> 
     <apex:selectRadio id="innerTestId" value="{!client.Would_you_like_to_recieve_future_promo__c}" styleClass="radio"> 
      <div class="row"> 
       <div class="col-sm-6"> 
        <div class="radio pa-cus"> 
         <apex:selectOption itemLabel="Yes" itemValue="Yes"/> 
        </div> 
       </div> 
       <div class="col-sm-6"> 
        <div class="radio pa-cus"> 
         <apex:selectOption itemLabel="No" itemValue="No"/> 
        </div> 
       </div> 
      </div> 
     </apex:selectRadio> 
    </div> 
</div> 

當點擊提交按鈕,我需要有一個jQuery腳本檢查渡過單選按鈕被選中YesNo這樣我就可以執行一些自定義的驗證。我通過將onclick="validateInnerTestId();"添加到提交按鈕來調用此函數。

我的問題是,我無法閱讀/檢查單選按鈕是選擇是或否或真或假。如果我能找出他們在那麼什麼狀態,我可以做我的

這裏是我的目標

<script type="text/javascript"> 
<script>                     
    function validateInnerTestId() 
    { 
     if(innerTestId is Selected as Yes) 
     { 
      execute fucntionX() 
     } 
     else 
     { 
      execute functionY() 
     } 
    } 
<script> 

下面是我如何試圖讀出單選按鈕的值一些例子:

alert($("#innerTestId").itemValue());這行不返回任何

alert($("#innerTestId").val());此行也不會返回任何

,這if else總是返回no

if ($('innerTestId').is(':checked')) 
{ 
    alert("yes"); 
} 
else 
{ 
    alert("no"); 
} 

有沒有人有關於如何檢查在這種情況下,單選按鈕,任何想法? 謝謝

+1

您是否嘗試過使用'如果($(「#innerTestId」)是(。 ':檢查'))'而不是? –

+0

是的,我也嘗試過,即使單選按鈕被選中,它也總是返回「否」。 – CB4

+0

您是否使用點擊事件來調用該函數? –

回答

2

作爲@Andrea在評論中提到,你只需在選擇器中忘記#。下面有一個簡單的例子來演示使用情況。如果你的代碼仍然無法運行,我們需要更多的信息。

  • 你確定validateInnerTestId()被調用嗎?
  • 它是如何被調用的?

$('#doit').on('click',function() { 
 
    var str = ""; 
 
    if ($('#test').is(':checked')) { 
 
    str += "Toggle checked? YES\n" 
 
    } else { 
 
    str += "Toggle checked? NO\n" 
 
    } 
 
    
 
    
 
    if ($('#option1').is(':checked')) { 
 
    str += "Option checked: 1"; 
 
    } else if ($('#option2').is(':checked')) { 
 
    str += "Option checked: 2"; 
 
    } else { 
 
    str += "Option checked: NONE"; 
 
    } 
 
    
 
    alert(str); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <input id="test" name="toggle" type="checkbox" value="" /> 
 
    <label for="toggle">Toggle</label> 
 
</div> 
 
<div> 
 
    <input type="radio" id="option1" name="options" value="1"> 
 
    <label for="option1">Option 1</label> 
 

 
    <input type="radio" id="option2" name="options" value="2"> 
 
    <label for="option1">Option 2</label> 
 
</div> 
 
<br /> 
 

 
<input id="doit" type="button" name="test" value="Tell me!" />

這也可能是一些做的ASP/Salesforce的實施?也許有人對這個問題的答案可能會幫助:How to check if an option is selected?

+0

感謝您的回答。但我已經嘗試過'if($('#innerTestId')。'(':checked'))'並且它總是返回'no' – CB4

+0

查看我的新編輯。 –

+0

我通過在我的提交按鈕中添加這一行來調用腳本方法,點擊'onclick =「validateInnerTestId();」 '顯然這個腳本方法是被執行的,因爲我可以看到'alert'調試。 – CB4

1

VF標籤使用動態ID,您應該做以下:

function validateInnerTestId(){ 
    if($('#{!component.innerTestId}').is(':checked')){ 
     execute fucntionX() 
    } 
    else{ 
     execute functionY() 
    } 
} 
相關問題