У меня есть текстовое поле в стороне div, и я использую функцию сценария java onclick, чтобы изменить цвет, когда я нажимаю на div. но проблема в том, почему эта функция onclick срабатывает при нажатии на текстовое поле? есть ли какое-либо решение, чтобы предотвратить этот пожар функции сценария java?
<table>
@{int i=0;}
@foreach (var m in Model.JobPostSundayTimeSlotVMList)
{
var divId = "SunSlot" + i;
var checkboxId = "SunIsSelected" + i;
var bitRate = "SunRate" + i;
<tr>
<td>
@Html.CheckBox("[" + i + "].SunIsSelected", m.SunIsSelected, new { @id = checkboxId, @hidden = "hidden" })
<div id="@divId" onclick = "setSlotColor('@divId','@checkboxId')";>
@Html.TextBox("[" + i + "].SunParttimerBidValue", "", new { @id = bitRate, @class = "form-control", @placeholder = m.SunParttimerBidValue.ToString("C2"), @style = "height:20px"})
</div>
</td>
</tr>
i++;
}
</table>
<script>
function setSlotColor(divId, checkbox) {
var property = document.getElementById(divId);
if ($('#' + checkbox).prop('checked')) {
$('#' + checkbox).prop('checked', false);
property.style.backgroundColor = "white";
}
else
{
property.style.backgroundColor = "burlywood";
$('#' + checkbox).prop('checked', true);
}
}
</script>
Попробовать это…
Включите приведенный ниже код в сценарий. Это исключит текстовые поля в div из
onClick
событияЕсли вы замените
div
селектор идентификатором div или именем класса css div, это будет более конкретным.Передайте событие методу, а затем попробуйте сделать
event.stopPropagation();
это — это должно остановить событие от пузырькового до других элементов.Интересно читать — https://javascript.info/tutorial/bubbling-and-capturing