0

我很难理解这段代码,因为我是 Javascript/HTML/C# Razor 的新手

目前我有以下

<li class="control-group">
        <label for="autoReload" class="control-label">Auto Reload</label>
        <div class="controls">
            <div class="btn-group radioButtons radioToggleCollapse" data-toggle-id="#autoReloadExtra" data-toggle="buttons-radio">
                <button type="button" data-value="no" class="btn active">No</button>
                <button type="button" data-value="yes" class="btn">Yes</button>
            </div>
            <input type="hidden" class="radioHidden" value="'$'+@(Model.IsAutoReload ? "True" : "False")" id="autoReload" name="IsAutoReload">
        </div>
</li>

我想要做的是当我单击按钮否时,将该文本框中的值更改为 False,或者如果我单击 true,那么我希望将该值更改为 true

我找到了以下Javascript,

   <script>
        $(document).ready(function(){

            $("#autoReload").on('change',function(){
                if ($(this).val() == 'yes') {
                    $(".saveCardSwitch button[data-value='true']").trigger('click');
                    $(".saveCardSwitch button").each(function(){
                        $(this).addClass('disabled').prop('disabled',true);
                    });
                }
                if ($(this).val() == 'no') {
                    $(".saveCardSwitch button").each(function(){
                        $(this).removeClass('disabled').prop('disabled',false);
                    });
                }
            });

        });
   </script>

现在我尝试将按钮上的实际数据值切换为真/假,但是当我这样做时,我打开的隐藏消息不再显示,所以我有点卡在这一点上。我还想澄清一下,当我调用 @(Model.IsReload ? "True" : "False" 时,它会在 post 方法中将值传递回我的控制器,对吗?

4

3 回答 3

1

据我了解,您只需要一个在特定元素上设置值的函数。您可以使用以下代码执行此操作

<li class="control-group">
<label for="autoReload" class="control-label">Auto Reload</label>
<div class="controls">
    <div class="btn-group radioButtons radioToggleCollapse" data-toggle-id="#autoReloadExtra" data-toggle="buttons-radio">
        <button type="button" data-value="no" onclick="setValue(false, 'autoReload');" class="btn active">No</button>
        <button type="button" data-value="yes" onclick="setValue(true, 'autoReload');" class="btn">Yes</button>
    </div>
    <input type="hidden" class="radioHidden" value="" id="autoReload" name="IsAutoReload">
</div>

你的函数 setValue 可以是这样的:

var setValue = function(value, id)
{
    var domEl = document.getElementById(id);
    domEl.value = value;
}
于 2013-07-10T17:48:43.637 回答
1

当您使用 Jquery 时,您可以通过以下方式进行操作:

$('.btn').click(function(){
   $('.radioHidden').val($(this).attr('data-value') === 'yes');
});

小提琴

于 2013-07-10T17:45:42.040 回答
1

您似乎没有任何事件绑定到要用于切换的按钮,这是您需要的第一件事,您可以执行此操作的 onclick 事件

<button type="button" data-value="no" onclick="updateHidden(this.dataset.value)" class="btn active">No</button>
<button type="button" data-value="yes" onclick="updateHidden(this.dataset.value)" class="btn">Yes</button>

那么更新隐藏输入的代码是

function updateHidden(value){
value = value==="yes"?"TRUE":"FALSE";
document.getElementById("autoReload").value = value;
}
于 2013-07-10T18:01:27.773 回答