2009-05-17 3 views
1

Как вы можете видеть на http://jsbin.com/erivi/ Я использую JQuery для изменения некоторого изображения (и атрибута изображения) в зависимости от выбранного переключателя, я также удаляю текст формы при нажатии внутри него.Как изменить название некоторого ввода текста в зависимости от радио с jquery?

И теперь я пытаюсь изменить текст формы в зависимости от переключателя.

Например, при нажатии «Выбор 3» мы должны увидеть «Текст ввода 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]);, который должен изменить название в зависимости от 3-й части моего название радио (Exemple: title='m602-1.png|Logo 3|Text of input 3')

Спасибо :)

Редактирование: я забыл упомянуть, что я использую несколько форм для своего реального кода, поэтому я ищу способ сделать это без конкретного имени ввода текста, чтобы избежать повторения скрипта для другого ввода текста.

ответ

2

EDIT: Идентификатор входного текстового поля должно быть уникальным. Кроме того, вам необходимо установить .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(); 
}); 

Обновлено Radio Button Нажмите Event Handler

$("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'); 
}); 
+0

Привет! Спасибо за ваш ответ, но с вашим кодом все еще есть одна и та же проблема. Он меняет текст при нажатии на переключатель, но когда вы нажимаете внутри формы, он удаляет текст только при первом выборе переключателя. Когда «Выбор 2» выбран, если вы щелкнете внутри формы, текст не будет удален. Это как-то связано с моим скриптом inputdynvalue поверх исходного кода. – Mark

+0

Mark - Я обновил свой пост. Полный рабочий код находится по адресу: http://jsbin.com/akawo –

+0

Большое спасибо, это именно то, что я искал! :-) – Mark

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> 
+0

Это не кажется для работы плюс я забыл упомянуть, что я использую несколько форм для своего реального кода, так же как и re любой другой способ сделать это без указания имени ввода текста? – Mark

+1

Ах, исправлено! Помните, что атрибут id должен быть уникальным. На странице с одним и тем же идентификатором не должно быть нескольких элементов. – Tyson

+0

Почти идеально, просто нужно как-то удалить текст при нажатии на него и вернуть его обратно при нажатии вне формы (и поместить текст обратно в зависимости от выбранного переключателя), поскольку он работает для выбора 1, но не для 2 других. – Mark

 Смежные вопросы

  • Нет связанных вопросов^_^