2015-11-26 4 views
-2

Мне было интересно, как я мог бы Javascript отправить «стартовый рейтинг» непосредственно на мой rating.php с повторяющимся кодом javascript.Как может форма отправки javascript упрощена

Как и в случае с этим, коды немного длиннее, даже подумали, что это работает. Мне просто нужна простая, меньшая версия кода для javascript.

Может кто-нибудь помочь мне с этим. Я попробовал кое-что, но они не сработали для меня.

Так что я посылаю то, что знаю, вместо этого.

Javascript:

function mystar5() { 
    var rate = document.getElementById("star5").value; 
    $.post("rating.php", { rating: rate}, function(output) { 
     $("#output").html(output); 
    }) 
}; 
function mystar4() { 
    var rate = document.getElementById("star4").value; 
    $.post("rating.php", { rating: rate}, function(output) { 
     $("#output").html(output); 
    }) 
}; 
function mystar3() { 
    var rate = document.getElementById("star3").value; 
    $.post("rating.php", { rating: rate}, function(output) { 
     $("#output").html(output); 
    }) 
}; 
function mystar2() { 
    var rate = document.getElementById("star2").value; 
    $.post("rating.php", { rating: rate}, function(output) { 
     $("#output").html(output); 
    }) 
}; 
function mystar1() { 
    var rate = document.getElementById("star1").value; 
    $.post("rating.php", { rating: rate}, function(output) { 
     $("#output").html(output); 
    }) 
}; 

Html:

<div id="dv1"> 
    <!-- star rating --> 
    <h4>Simple Rating System</h4> 

    <fieldset class="rating" onclick="mystar()"> 
     <input onclick="mystar5()" class="stars" type="radio" id="star5" name="rating" value="5" /> 
     <input onclick="mystar4()" class="stars" type="radio" id="star4" name="rating" value="4" /> 
     <input onclick="mystar3()" class="stars" type="radio" id="star3" name="rating" value="3" /> 
     <input onclick="mystar2()" class="stars" type="radio" id="star2" name="rating" value="2" /> 
     <input onclick="mystar1()" class="stars" type="radio" id="star1" name="rating" value="1" /> 
    </fieldset> 
+0

Я думаю, что ваш сценарий тег уродливы. "

2

Два варианта:

Создать одну функцию, которая передается скорость с помощью параметра:

function mystars(rate) { 
    $.post("rating.php", { rating: rate}, function(output) { 
     $("#output").html(output); 
    }) 
}; 

использование:

<input onclick="mystars(5)" class="stars" type="radio" id="star5" name="rating" value="5" /> 

или создать функцию, которая привязана к вашему HTML (более полезно, если параметр длиннее, например, абзац текста), но менее гибкий

function mystars() { 
    var rate = $(this).val() 
    $.post("rating.php", { rating: rate}, function(output) { 
     $("#output").html(output); 
    }) 
}; 

использование:

<input onclick="mystars()" class="stars" type="radio" id="star5" name="rating" value="5" /> 

Я бы с первым в этом случае, если вам нравится ваш onclick в HTML.


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

<input class="stars" type="radio" id="star5" name="rating" value="5" /> 

(обратите внимание, что нет onclick)

function mystars(rate) { 
    $.post("rating.php", { rating: rate}, function(output) { 
     $("#output").html(output); 
    }) 
}; 
$(function() { 
    $(".stars").on("click", function() { 
     mystars($(this).val()); 
    }); 
}); 
Смежные вопросы