【问题标题】:How to make the message appear without typing in the form如何在不输入表单的情况下显示消息
【发布时间】:2017-11-28 03:11:11
【问题描述】:

我只想在下拉按钮中选择房间和时间后显示消息。我全选了,会出现这样的形式:

$(document).ready(function(){ 
    $('#rooms, #time').bind('input', function() {        
        $('#time_room').val($('#rooms').val() + ' ' +
                            $('#time').val() );
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="rooms" id="rooms">
    <option value="" style="display: none;">SELECT</option>
    <option value="cas 104">cas 104</option>
    <option value="cas 105">cas 105</option>
</select>

<select name="time" id="time">
    <option value="" style="display: none;">SELECT</option>
    <option value="7:00 - 8:00 am">7:00 - 8:00 am</option>
    <option value="8:00 - 9:00 am">8:00 - 9:00 am</option>
</select>

<form action="" name="form">
    <input type="text" name="time_room" id="time_room">
</form>
<div id="feedback"></div>

上面的代码在index.php里面,然后我把这段代码放进去:

$("#feedback").load("check.php").hide();
$("#time_room").on('input', function(){
    $.post("check.php", { time_room: form.time_room.value }, 
    function(result){
        $("#feedback").html(result).show();
    });
});

在check.php里面

<?php
$host = "localhost";
$user = "root";
$password = "";
$database = "subject_loading_for_csit";
$con = mysqli_connect($host, $user, $password, $database) or die ("could not connect");
if (mysqli_connect_errno()) {
    echo "connection failed:".mysqli_connect_error();
    exit;
}


$rmt = $_POST['time_room'];

$query =  mysqli_query($con, "SELECT * FROM subject_scheduled where room_time = '$rmt' ");
$count = mysqli_num_rows($query);

if ($count == 0) {
    echo "OK";
}else if($count > 0){
    echo "Already taken";
}?>

此代码有效,但最终,除非我尝试插入或编辑表单,否则该消息不会显示。

这是我完成选择所有房间和时间的时候:

当我输入表格时。

【问题讨论】:

  • 所以当您从下拉菜单中选择房间和时间时,应该会出现“已使用”消息?我假设它在选择正确的时间后想要它?
  • @DhavalChheda 是的,你是对的。当我选择房间和时间时,消息应该会立即出现。

标签: javascript php jquery forms


【解决方案1】:

#time_room 的 'input' 事件只会在手动输入时触发,而不是在其值由 javascript/jQuery 设置时触发。

将事件处理程序附加到#time_room 似乎没有意义,因为它的值将(或应该)只会随着#rooms#time 的更改而改变。

#rooms#time 更改时,您需要调用$.post(...)

$(document).ready(function() {
    $('#rooms, #time').on('change', function() {
        var time_room_value = $('#rooms').val() + ' ' + $('#time').val();
        $('#time_room').val(time_room_value);
        $.post('check.php', { 'time_room': time_room_value }, function(result) {
            $("#feedback").html(result).show();
        });
    });
    // $("#feedback").load('check.php').hide(); // no point loading a message that will not be seen?
    $("#feedback").hide();
});

注意,我将input 更改为更常见的change 事件。

【讨论】:

  • 非常感谢,这对我帮助很大。现在我的项目就完成了。
  • 不用担心。祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 2014-04-10
  • 1970-01-01
  • 2011-05-20
  • 2022-01-25
  • 1970-01-01
相关资源
最近更新 更多