如何检查输入值是否存在以及值是否存在提交表单? jQuery的

时间:2016-03-21 13:22:19

标签: javascript jquery html forms

我有一个名为sub_category的空输入,当用户点击href链接时会填充该输入。我需要检查sub_category输入中是否存在值,以及是否提交了表单。我的代码是:

sbt start

和我的jQuery

<div class="multi-dropdown-list-1">
    <ul class="multi-dropdown-list">
        <li>
            <a href="#" class="ico-media" data-category="Accommodation" data-tag="none">
                Accommodation
                <i class="socialbakers-icons-before" data-icons-before="&#xe648;"></i>
            </a>
        </li>
    </ul>
</div>

<form accept-charset="UTF-8" action="{{ route('data_checker') }}" id="industry_form" name="industry_form" method="post" type="hidden">
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    <input id="sub_category" type="text" name="sub_category" />
    <input id="tags" type="text" name="tags" />
</form>

sub_category中的值正在填写正确。但是表格没有提交。

3 个答案:

答案 0 :(得分:0)

此外,bind()中不推荐使用jQuery(使用on())。如果值使用javascript更改,则input事件不会被触发。它只会在用户输入时触发。

因此,您应该在设置我想要的值之后在您要调用的函数调用中包装“check if exists”:

警告:未经测试的代码......

$('.multi-dropdown-list-1 a').click(function () {
    var value = $(this).data('category');
    var value2 = $(this).data('tag');
    var input = $('#sub_category');
    var input2 = $('#tags');
    var oldValue = input.val();
    input.val(value);
    input2.val(value2);

    if(val !== oldValue) {
       onValueChanged();
    }
});

function onValueChanged() {
    $("#industry_form").submit();
}

答案 1 :(得分:0)

在clcik事件结束时添加input.trigger("input");

输入事件仅在直接用户交互后才会触发,即;当用户在输入中输入内容然后输入失去焦点时。当你使用val()时,也可以手动触发事件,它应该可以工作

以下是工作代码:http://codepen.io/anon/pen/QNpxwz

完整的javascript应该是:

    // function when click input fill value
$('.multi-dropdown-list-1 a').click(function() {
  var value = $(this).data('category');
  var value2 = $(this).data('tag');
  var input = $('#sub_category');
  var input2 = $('#tags');
  input.val(value);
  input2.val(value2);
  input.trigger("change");
});

// check for value and if it exists submit form
$('#sub_category').on('change', function() {
  if ($(this).val() != "")
    $("#industry_form").submit();
});

答案 2 :(得分:0)

解决方案是在将值输入到输入

之后将触发器置于主函数内部触发
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

plt.close('all')
fig = plt.figure()
ax = fig.gca(projection='3d')

X = np.linspace(-5, 5, 43)
Y = np.linspace(-5, 5, 28)
X, Y = np.meshgrid(X, Y)

varone=np.random.rand(75,28,43) * 5.0 - 10.0
Z=varone[0,:,:]

cset = [[],[],[]]

# this is the example that worked for you:
cset[0] = ax.contourf(X, Y, Z, zdir='z', offset=5,
                      levels=np.linspace(np.min(Z),np.max(Z),30),cmap='jet')

# now, for the x-constant face, assign the contour to the x-plot-variable:
cset[1] = ax.contourf(Z, Y, X, zdir='x', offset=5,
                      levels=np.linspace(np.min(Z),np.max(Z),30),cmap='jet')

# likewise, for the y-constant face, assign the contour to the y-plot-variable:
cset[2] = ax.contourf(X, Z, Y, zdir='y', offset=-5,
                      levels=np.linspace(np.min(Z),np.max(Z),30),cmap='jet')

# setting 3D-axis-limits:    
ax.set_xlim3d(-5,5)
ax.set_ylim3d(-5,5)
ax.set_zlim3d(-5,5)

plt.show()