简体   繁体   English

检查表单中的输入是否在 Jquery 中为空

[英]Check if inputs in form are empty in Jquery

I have a form input in a modal我在模态中有一个表单输入

<div class="modal fade" id="formModal" aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-content p-3">
        <div class="modal-header">
            <h4 class="modal-title" id="formHeading"></h4>
        </div>
        <div class="modal-body">
            <form id="formRombel" name="formRombel" class="form-horizontal">
                <input type="hidden" name="rombel_id" id="rombel_id"></input>
                <div class="row form-group">
                    <label for="rombel">Rombel</label>
                    <input type="text" name="rombel" id="rombel" class="form-control" required>
                </div>
                <div class="row form-group">
                    <label for="tingkatan">Tingkatan</label>
                    <select name="tingkatan" id="tingkatan" class="form-control">
                        <option value="10">10</option>
                        <option value="11">11</option>
                        <option value="12">12</option>
                    </select>
                </div>
                <div class="row form-group">
                    <label for="jurusan">Jurusan</label>
                    <select name="jurusan" id="jurusan" class="form-control">
                        <option value="">-- Pilih --</option>
                        @foreach($jurusan as $j)
                        <option value="{{ $j->id }}">{{ $j->kode }}</option>
                        @endforeach
                    </select>
                </div>
                <div class="row form-group">
                    <label for="tahun_ajaran">Tahun Ajaran</label>
                    <input type="text" name="tahun_ajaran" id="tahun_ajaran" class="form-control" required>
                </div>
                <div class="row form-group mt-3">
                    <button type="submit" class="form-control btn btn-primary" id="saveBtn" value="create">Simpan</button>
                </div>
            </form>
        </div>
    </div>
</div>

I'm using laravel as my framework and this is my store function in the controller:我使用 laravel 作为我的框架,这是我在控制器中的存储功能:

public function storeRombel(Request $request){
    Rombel::updateOrCreate(['id' => $request->rombel_id],
    [
        'nama' => $request->rombel,
        'jurusan_id' => $request->jurusan,
        'tingkatan' => $request->tingkatan,
        'tahun_ajaran' => $request->tahun_ajaran,
    ]);
    return response()->json(['success', 'Data berhasil disimpan.']);
}

I want to check if the form inputs are empty before submitting an ajax request, so when i click save button it should check if any of the forms are empty and if it true then an alert will come out, if they aren't empty then it will submit the ajax request.我想在提交 ajax 请求之前检查表单输入是否为空,因此当我单击保存按钮时,它应该检查是否有任何表单为空,如果为真,则会发出警报,如果它们不为空,则它将提交ajax请求。

    $('#saveBtn').click(function (e) {
    e.preventDefault();
    $(this).html('Menyimpan..');
    var form = $('#formRombel').serialize();
    var rombel_id = $('rombel_id').val();
    var rombel = $('rombel').val();
    var tingkatan = $('tingkatan').val();
    var jurusan = $('jurusan').val();
    var tahun_ajaran = $('tahun_ajaran').val();
    if (rombel_id == "" ||  rombel == "" || tingkatan == "" || jurusan == "" || tahun_ajaran == "") {
        alert('Ada data yang kosong!');
        $('saveBtn').html('Simpan');
    }else{
        $.ajax({
          data: $('#formRombel').serialize(),
          url: "{{ route('admin.rombel.store') }}",
          type: "POST",
          dataType: 'json',
          success: function (data) {
              $('#formRombel').trigger("reset");
              $('#formModal').modal('hide');
              $('#saveBtn').html('Simpan');
              table.draw();
          },
          error: function (data) {
              alert('Error:' + data.response);
              $('#saveBtn').html('Simpan');
          }
      });
    }
});

The problem is when i click the save button while some of the forms empty, it skips the if condition and runs the else condition and prompts out an error.问题是当我单击保存按钮而某些表单为空时,它会跳过 if 条件并运行 else 条件并提示错误。 I check the error and it tells me that there cannot be a null value which is what i expected.我检查了错误,它告诉我不能有我所期望的空值。 If i fill all the forms it successfully stored.如果我填写了它成功存储的所有表格。 I don't get why the if condition doesn't detected as true.我不明白为什么没有检测到 if 条件为真。

It's not being skipped, it's just that input fields output string values hence an empty input field is equivalent to "" or empty string.它没有被跳过,只是输入字段输出字符串值,因此空输入字段等效于 "" 或空字符串。

You could use .length for null checking.您可以使用 .length 进行空检查。

I also noticed you forgot to prepend the symbol # for your IDs.我还注意到您忘记在 ID 前面加上符号 #。

var form = $('#formRombel').serialize();
var rombel_id = $('#rombel_id').val();
var rombel = $('#rombel').val();
var tingkatan = $('#tingkatan').val();
var jurusan = $('#jurusan').val();
var tahun_ajaran = $('#tahun_ajaran').val();

if (rombel_id.length == 0 ||  rombel.length == 0 || tingkatan.length == 0 || jurusan.length == 0 || tahun_ajaran.length == 0) {
    alert('Ada data yang kosong!');
    $('saveBtn').html('Simpan');
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM