【问题标题】:Jquery radio button with onclick带有onclick的Jquery单选按钮
【发布时间】:2011-10-05 01:21:56
【问题描述】:

我有一个radio_button_tag,方式如下:

 <%= radio_button_tag "content[id]", content.id%><%= content.title %>

并通过以下方式拥有一个 text_field:

<%= f.text_field :title %>

当我单击单选按钮时,单选按钮的标题应填充在上面的 text_field 中。我正在尝试为此使用 jQuery。

【问题讨论】:

  • 如果您也发布生成的 HTML 可能会有所帮助。

标签: jquery ruby-on-rails radio-button


【解决方案1】:

首先,让我们为单选按钮添加一个标题属性:

<%= radio_button_tag "content[id]", content.id, {}, {:title => content.title} %><%= content.title %>

前面应该输出一些看起来像这样的HTML:

<input id="content_id_<content.id>" type="radio" value="<content.id>" title="<content.title>" name="content[id]" />

其次,这里是 jQuery 代码:

jQuery(function(){
    // For each radio button whose name is 'content[id]':
    jQuery("input[type='radio'][name='content[id]']").each(function(index, button){
        // Give the button a certain click behaviour:
        jQuery(button).click(function(){
            // Set the value of 'title' textfield to the radio's title
            jQuery("#title").val(this.title);
        });
    });
});

此匿名函数将在文档加载完成后执行。它将点击行为附加到您的按钮,因此您不需要 onclick 属性。

(这只会将点击行为添加到单选按钮本身。如果你想为每个单选按钮添加一个&lt;label&gt;元素并赋予它相同的行为,你必须在前面的jQuery代码中添加一点.)

【讨论】:

  • JS代码应该放在哪里?在其余 html 视图代码之后的 标记中,还是在脚手架生成的控制器 咖啡文件 中?
  • @AlexVentura :我已经很多年没有使用过咖啡脚本了,所以如果你想将原始 javascript 复制并粘贴到咖啡脚本文件中,我不能说这是否会被正确处理。但是,您可以将代码放入脚本标记或源文件中。它不需要位于 html 的末尾,因为 jQuery 函数调用不应该在页面加载完成之前调用其中的匿名函数。
  • 好吧,实际上当你为资源生成脚手架时,它会生成一个咖啡脚本文件,但你也可以将其更改为 js 文件。我想知道在 Rails 视图或部分 HTML 的不同块之间显示 标记是否看起来很讨厌?你怎么看?
  • @AlexVentura :我同意我不喜欢 &lt;head&gt; 之外的脚本标签。我会将这段代码放入一个外部脚本文件中,并将其包含在&lt;head&gt; 中。
  • 好吧,我会按照你说的做,谢谢你的提示!
【解决方案2】:

不确定 ruby​​,但在 .net 中,我会在收音机、标签和文本框上放一个类名。那我就可以用这个了;

$(document).ready(function(){

  $(".radioClassName").click(function(){

    $(".TextBoxClassName").val($(".radioLabelClassName").text());

  });

});

您的 html 可能如下所示;

<input type=radio class="radioClassName"><label class="radioLabelClassName">my text"</label>

<input type="text" class="TextBoxClassName">

不确定这是否可行,但我认为 jQuery 是 jQuery

【讨论】:

    【解决方案3】:

    假设 html 为

     <form>
    <input type="radio" id="sex" name="sex" value="male" /> Male<br />
    <input type="radio" id="sex" name="sex" value="female" /> Female
    
        <input type="text" name="des" id="des" />
    </form>
    

    Javascript 将是

    $("#des").val($("#sex").val());
    $("#sex").change(function(){
        alert($("#sex").val());     
       $("#des").val($("#sex").val());
    });
    Demo
    

    http://jsfiddle.net/Wr8dJ/23/

    【讨论】:

    • vivek,我正在从数据库中获取 content.title,其中 content.id 是内容表的 primary_key 值。在这里,当我单击单选按钮时, content.title 的值应该特定于 content.id 值。所以,如果我点击单选按钮,值 content.title 应该显示在文本框中。
    • 我是这个网站的新手,我不知道格式.. "created_at desc", :limit => 2) %>


    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    相关资源
    最近更新 更多