为什么我无法在jquery中获得此单选按钮的状态?

时间:2017-08-31 14:37:41

标签: javascript jquery html salesforce visualforce

我从salesforce visualforce页面获得了这段代码。

<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");
}

在这种情况下,有没有人知道如何检查单选按钮? 感谢

2 个答案:

答案 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?

答案 1 :(得分:1)

VF标签使用动态ID,您应该执行以下操作:

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