Никакая aceptar доблесть repetidos en una tabla utilizando jQuery

Tengo una tabla а-ля cual, le agrego datos desde tres diferentes TextBox. Параграф esto utilizo jQuery y C# de la siguiente manera:

<form>
    <input type="text" id="inputText1">
    <input type="text" id="inputText2">
    <input type="text" id="inputText3">
    <button type="button" class="btn btn-default" id="submit">Submit</button>
</form>
<script>
    $("#submit").click(function (e) {
        e.preventDefault();
        var val1 = $("#inputText1").val();
        var val2 = $("#inputText2").val();
        var val3 = $("#inputText3").val();
        $('#myTable').append('<tr><th scope="row">2</th><td class="value">' + val1 + '</td><td>' + val2 + '</td><td>' + val3 + '</td><td><a href="#" id="select">Modificar</a>                         <a href="#" id="eliminar">Eliminar</a></td></tr>');
        $("#inputText1").val('');
        $("#inputText2").val('');
        $("#inputText3").val('');
    });
</script>

Таблица El código de mi es el siguiente (puro HTML).

<div class="table-responsive">
    <table class="table table-striped table-bordered table-condensed" id="myTable" style="width:90%; margin:0 auto;">
        <thead>
            <tr>
                <th>#</th>
                <th>ID</th>
                <th>Last Name</th>
                <th>Username</th>
                <th></th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
</div>

Es muy sencillo y Комо ven tiene пробует columnas, pero el que me interesa es el ID, este никакой debe repetirse en ningún registro de la tabla, quiero lograr, utilizando jQuery, que al momento de ingresar un ID repetido se le muestre un mensaje al usuario indicando la imposibilidad de registrar al empleado y que de hecho никакой se le permita ingresar el registro en la tabla.

Комо complemento, estos datos, se almacenan en la tabla, pero никакой en la base de datos, ese será ООН paso следующий. Напоминание De, соло quiero validar que el ID никакой se repita en los registros de la tabla.

1
задан 12.03.2017, 04:34
2 ответа

Просто верила одна funciГіn в, что повторил первые td каждой линии и сравнил текст с id, который было нужно вводить в компьютер.

Замечает: , если поле идентификация будет использован как PK в базе данных, это поле не должно быть в формуляре. Если два пользователя создают пользователя в то же время, tendrГЎn та же PK и habrГЎ конфликт в базе данных.

$("#submit").click(function(e) {
  e.preventDefault();
  
  var id = $("#inputText1").val().toLowerCase();
  var lastname = $("#inputText2").val();
  var name = $("#inputText3").val();
  
  if (checkId(id)) {
  	return alert('El ID ya está siendo usado');
  }
  
  $('#myTable tbody').append('<tr><td for="id">' + id + '</td><td>' + lastname + '</td><td>' + name + '</td><td><a href="#" id="select">Modificar</a><a href="#" id="eliminar">  Eliminar</a></td></tr>');
  $("#inputText1").val('');
  $("#inputText2").val('');
  $("#inputText3").val('');
  $('#inputText1').focus();
});

function checkId (id) {
	let ids = document.querySelectorAll('#myTable td[for="id"]');

  return [].filter.call(ids, td => td.textContent === id).length === 1;
}
*, *:before, *:after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  padding: 20px;
}

.table-responsive {
  margin-top: 25px;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form class="form">
  <div class="form-group">
    <label for="inputText1">ID</label>
    <input type="text" class="form-control" id="inputText1">
  </div>
  
  <div class="form-group">
    <label for="inputText2">Lastname</label>
    <input type="text" class="form-control" id="inputText2">
  </div>
  
  <div class="form-group">
    <label for="inputText3">Name</label>
    <input type="text" class="form-control" id="inputText3">
  </div>
  <button type="button" class="btn btn-default" id="submit">Submit</button>
</form>

<div class="table-responsive">
  <table class="table table-striped table-bordered table-condensed" id="myTable" style="width:100%; margin:0 auto;">
    <thead>
      <tr>
        <th>ID</th>
        <th>Last Name</th>
        <th>Username</th>
        <th>Acciones</th>
      </tr>
    </thead>
    <tbody></tbody>
  </table>
</div>
1
ответ дан 24.11.2019, 10:37
  • 1
    большое спасибо Густаво, решает мое сомнение, как дополнение для того, у которого есть то же сомнение только доводить до сведения, что идентификация не PK. –  12.03.2017, 05:45
  • 2
    Одну спрашивает больше Густаво, если бы он захотел сравнить не первую информацию о таблице а втором или третьем, который deberí чтобы изменять в твоем ответе? который я должен изменять, чтобы мочь выбирать любую колонну таблицы и así сравнивать, что не повторилась информация? –  12.03.2017, 05:50
  • 3
    Если id может быть в cualquiier сторона, лучше добавь, что признак восходит в каждой ячейке id. Например, <td for="id"> и в funció n checkId вместо того, чтобы выбирать первые td каждой линии, выбирает td с признаком for="id": document.querySelectorAll('td[for="id"]');. – gugadev 12.03.2017, 05:53
  • 4
    извини неведение, это осталось бы так: function checkId (пойдите) { let ids = document.querySelectorAll (' td [for =" id"] '); return [] .filter.call (ids, td = > td.textContent === пойдите) .length === 1; } и с одним < td for =" id" > ' + lastname + ' < / td>? –  12.03.2017, 06:00
  • 5
    Я обновил мой ответ añ adiendo это ú ltimo. – gugadev 12.03.2017, 06:04

Привет друзья я сделал точно это ответом Густаво, но стоившая я поместил ему один alert со стоимостью, которая приносит меня:

let ids = document.querySelectorAll('#tbventas td[for="nombre_pro"]');

и это выходит в alert: [object NodeList]. Кто-то я podrГ, - чтобы говорить, даже функционирует ли этот метод, или что я врежу я td, это у меня есть asГ-:

html += "<td for='nombre_pro'> <input type='hidden' id='idproductos' name='idproductos[]' value='" + info_producto.id + "'>" + info_producto.nombre + " </td>";

Помогает пожалуйста...

0
ответ дан 24.11.2019, 10:37

Теги

Похожие вопросы