1

正如您在http://jsbin.com/erivi/上看到的那样,我正在使用 Jquery 来更改某些图像(和图像属性),具体取决于所选的单选按钮,当单击其中的表单文本时,我也会删除表单文本。

现在我要做的是根据选中的单选按钮更改表单的文本。

例如,当点击“Choice 3”时,我们应该看到“Text of input 3”。

您可以在此处实时查看和编辑我的代码:http: //jsbin.com/erivi/edit

我需要改进的部分是:

  imgFldr = 'http://download.kde.org/khotnewstuff/icons/previews/'; 
$("input[type='radio']").click(function() { 
   var strarr = this.title.split('|'); 
   if(strarr.length < 2) return; 
   $('#'+this.name).attr('src', imgFldr+strarr[0]).attr('alt', strarr[1]).attr('title', starr[2]); 
}); 

特别.attr('title', starr[2]);是应该根据我的广播标题的第三部分更改标题(例如title='m602-1.png|Logo 3|Text of input 3':)

谢谢 :)

编辑:我忘了提到我在我的真实代码中使用了几种形式,这就是为什么我正在寻找一种方法来做到这一点,而不需要文本输入的特定名称,以避免重复其他文本输入的脚本。

4

2 回答 2

2

编辑:输入文本框的 id 必须是唯一的。此外,您需要在单选按钮的单击事件中设置.attr('title',strarr[2]),和提示类。.val(strarr[2])还需要对您的inputdynvalue插件进行一些更改。

请在http://jsbin.com/akawo查看完整更新的工作代码

更新的插件代码

(function($) { 
    $.fn.inputdynvalue = function (options) { 
        var opts = $.extend({}, $.fn.inputdynvalue.defaults, options); 
        return this.each(function(){ 
            var hvalue = opts.htext; 
            switch (opts.htext) { 
                case 'title' : hvalue = $(this).attr('title'); break; 
                case 'value' : hvalue = $(this).attr('value'); break; 
            } 
            $(this).attr('value', hvalue).addClass(opts.hclass) 
            .unbind('focus blur') 
            .bind('focus', function() {                       
                if (this.value === this.title) { 
                    this.value = ''; 
                    $(this).removeClass(opts.hclass); 
                } 
            }) 
            .bind('blur', function() { 
                if (this.value === '') { 
                    this.value = this.title; 
                    $(this).addClass(opts.hclass); 
                } 
            }); 
        }); 
    }; 
    $.fn.inputdynvalue.defaults = { 
        htext: 'title', 
        hclass: 'hint' 
    }; 
})(jQuery); 
$(document).ready(function(){ 
    $("input[type='text']").inputdynvalue(); 
});

更新了单选按钮单击事件处理程序

$("input[type='radio']").click(function() { 
   var strarr = this.title.split('|'); 
   if(strarr.length < 2) return; 
   $('#'+this.name).attr('src', imgFldr+strarr[0]).attr('alt', strarr[1]); 
   $('#'+this.name+'_text')
      .attr('title',strarr[2])
      .val(strarr[2])
      .addClass('hint'); 
}); 
于 2009-05-18T00:46:45.067 回答
1

试试这个:

<form method="post" action="">
    <div>
        <img id="iymok" src="http://download.kde.org/khotnewstuff/icons/previews/m732-1.png" alt="Alt by default" />
        <input type="text" id="iymok_text" title="Blablabla Text 1" />
        <label><input type="radio" checked="checked" name="iymok" title="m133-1.png|Logo 1|Blablabla Text 1" />Choice 1</label>
        <label><input type="radio" name="iymok" title='m203-1.png|Logo 2|Text of input 2' />Choice 2</label>
        <label><input type="radio" name="iymok" title='m602-1.png|Logo 3|Text of input 3' />Choice 3</label>
    </div>
</form>
<script type="text/javascript">
    imgFldr = 'http://download.kde.org/khotnewstuff/icons/previews/';
    $("input[type='radio']").click(function() {
        var strarr = this.title.split('|');
        if (strarr.length >= 3) {
               $('#'+this.name).attr('src', imgFldr+strarr[0]).attr('alt', strarr[1]).attr('title', strarr[2]);
               $('#'+this.name+'_text').attr('title', strarr[2]);
        }
    });
</script>
于 2009-05-17T07:46:32.483 回答