Jquery для изменения цели формы - PullRequest
9 голосов
/ 28 ноября 2011

Я хочу изменить цель формы в зависимости от выбранной опции.

<form id='post_form' target="targetvalue">

<select id="select" name="select">
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
</select>

    </form>


 <script>
 $("#select").change(function() {
    var targetvalue = $("#select option:selected").text();
    $("#post_form").attr("target", targetvalue);
    });

 </script>

Ответы [ 2 ]

14 голосов
/ 28 ноября 2011
  1. Если вы хотите установить для target значение Option 1 или Option 2, то все, что у вас есть, правильно.Однако, если вы хотите установить целевое значение либо option1, либо option2, вы должны иметь:

    var targetvalue = $("#select option:selected").val();
    

    , который можно упростить до всего;

    var targetvalue = $(this).val();
    
  2. Если вы используете jQuery> 1.6, вы должны использовать prop() вместо attr().Для получения дополнительной информации см. StackOverflow: .prop () против .attr ()

    $("#select").change(function() {
        var targetvalue = /* which ever you decide */;
        $("#post_form").prop("target", targetvalue);
    });
    
  3. Вы не должны ссылаться только на последние версия в производственной среде;если новая версия jQuery выходит с серьезными изменениями, вы облажались.Ссылка на определенную версию jQuery и тщательное тестирование перед обновлением до нового выпуска;

    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    
  4. Если вы только , определяя <script>после того, как элемент <form> может быть нацелен на него, поймите, что вы можете использовать блок $(document).ready() для определения сценария где угодно;

    <script>
        $(document).ready(function () {
            $('#select').change(function () {
                var targetvalue = /* which ever you decide */;
                $('#post_form').prop("target", targetvalue);
            });
        });
    </script>
    
0 голосов
/ 28 ноября 2011

Если ваша HTML-страница действительно написана так, как указано в вопросе, то сценарий будет запускаться после обновления DOM с помощью формы, которую вы пытаетесь изменить, - но если сценарий является частью файла JavaScript, связанного в тогдавам нужно заключить его в функцию $ (document) .ready () ....

Спасибо @TJCrowder за ссылку на следующую статью об этом -> Событие готовности документа?

Поместите ваш скрипт в блок $ (document) .ready () - это обеспечит готовность DOM перед попыткой его изменить:

<script type="text/javascript">
  $(document).ready(function() {
     $("#select").change(function() {
       var targetvalue = $(this).val();
       $("#post_form").prop("target", targetvalue);
     });
  });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...