2016-12-05 38 views
0

我想创建评级系统,而不是使用无线电输入类型我想使用自定义divs /跨度(包含fontello图标)。点击他们应该初始化POST方法,如:

if (isset($_POST['span1'])){ 
/*send to database that user voted 1/5*/ 
} 
if (isset($_POST['span2'])){ 
/*send to database that user voted 2/5*/ 
} 

我发现在其他that solution,hovewer不告知PHP被点击哪个元素。我怎样才能做到这一点?

我投票“模板”:

<form name="bald" method = "post"> 
    <span class="ico_style" onclick="bald.submit();" name = "span1">ICO</span> 
    <span class="ico_style" onclick="bald.submit();" name = "span2">ICO</span> 
    <span class="ico_style" onclick="bald.submit();" name = "span3">ICO</span> 
    <span class="ico_style" onclick="bald.submit();" name = "span4">ICO</span> 
    <span class="ico_style" onclick="bald.submit();" name = "span5">ICO</span> 
</form> 
+1

使用单选按钮男子跨度不输入字段 – madalinivascu

+0

有什么错单选按钮? – madalinivascu

+0

我说我想要INSTEAD inpit类型,因为我使用自定义fontello图标。 – Atex

回答

1

我要发请您使用javascript的强大功能。要传递一个值,你需要一个input,它可以被隐藏。使用javascript,您可以处理跨度的点击并将值传递给隐藏的输入(此处为rateInput)。

<form method="post" class="rate-form"> 
    <input type="hidden" name="rate" value="" class="rate-input"> 
    <span class="ico_style" data-rate="1">ICO</span> 
    <span class="ico_style" data-rate="2">ICO</span> 
    <span class="ico_style" data-rate="3">ICO</span> 
    <span class="ico_style" data-rate="4">ICO</span> 
    <span class="ico_style" data-rate="5">ICO</span> 
</form> 

<script> 
    function onRate() { 
     var rateInput = document.querySelector('.rate-input'); 
     rateInput.value = this.getAttribute('data-rate'); 
     document.querySelector('.rate-form').submit(); 
    } 
    var spans = document.querySelectorAll('.rate-form .ico_style'); 
    for (var i = 0; i< spans.length; i++) { 
     spans[i].addEventListener("click", onRate, true); 
    } 
</script> 

服务器端:

<?php 
if (isset($_POST['rate'])){ 
    $rate = $_POST['rate']; 
} 
+0

非常感谢。如果我问我是否认为正确:'.rate-form.ico_style'意味着从表单方法中选择所有选择器?我对js不太熟悉。 – Atex

+0

@Atex选择所有具有'rate-form'类的父类的'ico_style'类元素。类名之间的空间是必不可少的。 – rNix

+0

好吧,我现在明白了。它现在与我的图标完美结合。再次感谢你的帮助。 – Atex

0

(madalin ivascu)是正确使用单选按钮,但如果你想使用范围, 然后 在窗体底部创建一个隐藏的输入时,在图标使用jQuery用户点击保存,他说里面输入选择哪一个,并检查它在你的PHP函数

if (isset($_POST['name_of_input'])){ 

}