j-запрос и форма javascript, использующие несколько отправок, не передающие все данные из формы - PullRequest
0 голосов
/ 14 декабря 2010

Я не очень хорошо разбираюсь в javascript или jQuery, в основном в работе с базами данных, но у меня возникли небольшие проблемы с получением довольно сложной формы для отправки всех своих данных.

В основном это три разные кнопки отправки, которые предназначены для публикации данных в форме с другими настройками конфиденциальности, отправляемыми в таблицу.Таблица в базе данных обновляется с правильной настройкой конфиденциальности для каждой кнопки, но она не отправляет значение для мысленной части формы в файл php, для которого она предназначена.

Формареализован в HTML следующим образом:

<FORM action="thought_post.php" method="post" name="thought">

<INPUT onfocus="this.select(); this.value=''" 
       type="text" value="Thought..." 
       size="72" />
<div class="megamenu" style="position: absolute; ;left: 478px; top: 11px;">
    <ul>
        <li class="downservices"><a href="#">Publish...</a></li>
        <div class="servicesdropped">
            <ul class="right">
                <input type="hidden" name="privacy">
                <li><a href="javascript:poststyle('private')">Private</a></li> 
                <li><a href="javascript:poststyle('friends')">Friends only</a></li>
                <li><a href="javascript:poststyle('public')">Public</a></li>
            </ul>
        </div>
    </ul>
</div>

</FORM>

, а JavaScript в заголовке той же страницы выглядит следующим образом:

<link rel="stylesheet" href="dropdown.css" type="text/css" media="screen" />
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>

<script type="text/javascript"> 
    $(document).ready(function(){
        $(".downservices").click(function(){
            $(".servicesdropped").toggle("fast");
        });
    });
</script>

<script language="JavaScript" type="text/javascript">
<!--
   function poststyle(selectedtype)
    {
       document.thought.privacy.value = selectedtype ;
       document.thought.submit() ;
    }
-->
</script>

Если кто-нибудь может объяснить, почему введено значение thoughtпользователем не передается на thought_post.php, это было бы замечательно!

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

Попробуйте присвоить name вашей «мысли» input.name требуется, чтобы элемент управления формы был действительным для отправки :

<INPUT onfocus="this.select(); this.value=''" type="text" value="Thought..." size="72" name="thought" />

В качестве примечания, убедитесь, что ваша другая input также является действительной разметкой, input теги должны быть самозакрывающимися:

<input type="hidden" name="privacy" />

После внесения этих изменений и проверки сообщения формы с помощью FireBug я смог увидеть правильное значение для "мысли".

Кроме того, как уже упоминалось в другом ответе, вы должны разделить ваш JavaScript и HTML и, возможно, выполнить это полностью с помощью jQuery.

Надеюсь, это поможет!

0 голосов
/ 14 декабря 2010

Попробуйте установить идентификатор для поля конфиденциальности (например, id = "privacy") и выберите его следующим образом:

getElementById("privacy").value = selectedtype;

Кстати, вы можете поместить весь javascript в один <script> блок:

<script type="text/javascript"> 
    $(document).ready(function(){
        $(".downservices").click(function(){
            $(".servicesdropped").toggle("fast");
        });
    });

    function poststyle(selectedtype)
    {
        document.thought.privacy.value = selectedtype ;
        document.thought.submit() ;
    }
</script>

Вы также можете очень легко обработать событие фокуса на вашем входе с помощью jQuery, чтобы сценарии не были в вашем HTML.

...