Browse Source

Changed usage of .prop() to .attr() in order to avoid issues when working with forms having input with names matching form properties. Related to #8014.

tags/2.0.4
Alexander Makarov 10 years ago
parent
commit
926770b7d9
  1. 24
      framework/assets/yii.activeForm.js
  2. 14
      framework/assets/yii.gridView.js

24
framework/assets/yii.activeForm.js

@ -168,7 +168,7 @@
var settings = $.extend({}, defaults, options || {});
if (settings.validationUrl === undefined) {
settings.validationUrl = $form.prop('action');
settings.validationUrl = $form.attr('action');
}
$.each(attributes, function (i) {
@ -312,13 +312,13 @@
}
if (needAjaxValidation) {
var $button = data.submitObject,
extData = '&' + data.settings.ajaxParam + '=' + $form.prop('id');
if ($button && $button.length && $button.prop('name')) {
extData += '&' + $button.prop('name') + '=' + $button.prop('value');
extData = '&' + data.settings.ajaxParam + '=' + $form.attr('id');
if ($button && $button.length && $button.attr('name')) {
extData += '&' + $button.attr('name') + '=' + $button.attr('value');
}
$.ajax({
url: data.settings.validationUrl,
type: $form.prop('method'),
type: $form.attr('method'),
data: $form.serialize() + extData,
dataType: data.settings.ajaxDataType,
complete: function (jqXHR, textStatus) {
@ -509,17 +509,17 @@
data.validated = true;
var $button = data.submitObject || $form.find(':submit:first');
// TODO: if the submission is caused by "change" event, it will not work
if ($button.length && $button.prop('type') == 'submit' && $button.prop('name')) {
if ($button.length && $button.attr('type') == 'submit' && $button.attr('name')) {
// simulate button input value
var $hiddenButton = $('input[type="hidden"][name="' + $button.prop('name') + '"]', $form);
var $hiddenButton = $('input[type="hidden"][name="' + $button.attr('name') + '"]', $form);
if (!$hiddenButton.length) {
$('<input>').attr({
type: 'hidden',
name: $button.prop('name'),
value: $button.prop('value')
name: $button.attr('name'),
value: $button.attr('value')
}).appendTo($form);
} else {
$hiddenButton.prop('value', $button.prop('value'));
$hiddenButton.attr('value', $button.attr('value'));
}
}
$form.submit();
@ -601,11 +601,11 @@
var getValue = function ($form, attribute) {
var $input = findInput($form, attribute);
var type = $input.prop('type');
var type = $input.attr('type');
if (type === 'checkbox' || type === 'radio') {
var $realInput = $input.filter(':checked');
if (!$realInput.length) {
$realInput = $form.find('input[type=hidden][name="' + $input.prop('name') + '"]');
$realInput = $form.find('input[type=hidden][name="' + $input.attr('name') + '"]');
}
return $realInput.val();
} else {

14
framework/assets/yii.gridView.js

@ -55,7 +55,7 @@
return this.each(function () {
var $e = $(this);
var settings = $.extend({}, defaults, options || {});
gridData[$e.prop('id')] = {settings: settings};
gridData[$e.attr('id')] = {settings: settings};
var enterPressed = false;
$(document).off('change.yiiGridView keydown.yiiGridView', settings.filterSelector)
@ -83,7 +83,7 @@
applyFilter: function () {
var $grid = $(this), event;
var settings = gridData[$grid.prop('id')].settings;
var settings = gridData[$grid.attr('id')].settings;
var data = {};
$.each($(settings.filterSelector).serializeArray(), function () {
data[this.name] = this.value;
@ -117,7 +117,7 @@
setSelectionColumn: function (options) {
var $grid = $(this);
var id = $(this).prop('id');
var id = $(this).attr('id');
gridData[id].selectionColumn = options.name;
if (!options.multiple) {
return;
@ -125,17 +125,17 @@
var checkAll = "#" + id + " input[name='" + options.checkAll + "']";
var inputs = "#" + id + " input[name='" + options.name + "']";
$(document).off('click.yiiGridView', checkAll).on('click.yiiGridView', checkAll, function () {
$grid.find("input[name='" + options.name + "']:enabled").prop('checked', this.checked);
$grid.find("input[name='" + options.name + "']:enabled").attr('checked', this.checked);
});
$(document).off('click.yiiGridView', inputs + ":enabled").on('click.yiiGridView', inputs + ":enabled", function () {
var all = $grid.find("input[name='" + options.name + "']").length == $grid.find("input[name='" + options.name + "']:checked").length;
$grid.find("input[name='" + options.checkAll + "']").prop('checked', all);
$grid.find("input[name='" + options.checkAll + "']").attr('checked', all);
});
},
getSelectedRows: function () {
var $grid = $(this);
var data = gridData[$grid.prop('id')];
var data = gridData[$grid.attr('id')];
var keys = [];
if (data.selectionColumn) {
$grid.find("input[name='" + data.selectionColumn + "']:checked").each(function () {
@ -153,7 +153,7 @@
},
data: function () {
var id = $(this).prop('id');
var id = $(this).attr('id');
return gridData[id];
}
};

Loading…
Cancel
Save