bezzubtsev
Гуру форума
- Регистрация
- 14 Май 2015
- Сообщения
- 277
- Реакции
- 93
- Автор темы
- #1
Ищу помощника на периодическую подработку. Просьба писать в личку.
Необходимо решить такую задачу:
Есть список:
Есть функция в JS
Ниже пример кода, как должно было бы работать, если бы не было других скриптов, блокирующих эти функции:
Задача - сделать так, чтобы при выборе одного из 5-ти input методов доставки происходили изменения в других input'ах методов оплаты, плюс скрывались/показывались div блоки.
Буду рад помощи и найти помощника на различные задачи по JS.
Необходимо решить такую задачу:
Есть список:
Код:
<dl class="sp-methods">
<dt>Доставка почтой</dt>
<dd>
<ul>
<li>
<style type="text/css">
#advice-validate-one-required-by-name-s_method_flatrate4_flatrate4{
display: none !important;
}
</style>
<input name="shipping_method" type="radio" value="flatrate4_flatrate4" id="s_method_flatrate4_flatrate4" class="radio validate-one-required-by-name" onclick="save_shipping_method(shipping_method_url, update_shipping_payment, update_shipping_review);">
<label for="s_method_flatrate4_flatrate4">по Беларуси <span class="price">5,00 BYN</span> </label>
</li>
</ul>
</dd>
<dt>Доставка курьером</dt>
<dd>
<ul>
<li>
<style type="text/css">
#advice-validate-one-required-by-name-s_method_flatrate3_flatrate3{
display: none !important;
}
</style>
<input name="shipping_method" type="radio" value="flatrate3_flatrate3" id="s_method_flatrate3_flatrate3" class="radio validate-one-required-by-name" onclick="save_shipping_method(shipping_method_url, update_shipping_payment, update_shipping_review);">
<label for="s_method_flatrate3_flatrate3">за пределами МКАД 5 км <span class="price">8,00 BYN</span> </label>
</li>
</ul>
</dd>
<dt>Доставка курьером</dt>
<dd>
<ul>
<li>
<style type="text/css">
#advice-validate-one-required-by-name-s_method_flatrate2_flatrate2{
display: none !important;
}
</style>
<input name="shipping_method" type="radio" value="flatrate2_flatrate2" id="s_method_flatrate2_flatrate2" class="radio validate-one-required-by-name" onclick="save_shipping_method(shipping_method_url, update_shipping_payment, update_shipping_review);">
<label for="s_method_flatrate2_flatrate2">в пределах МКАД <span class="price">5,00 BYN</span> </label>
</li>
</ul>
</dd>
<dt>Самовывоз</dt>
<dd>
<ul>
<li>
<input name="shipping_method" type="radio" value="flatrate_flatrate" id="s_method_flatrate_flatrate" checked="checked" class="radio validate-one-required-by-name" onclick="save_shipping_method(shipping_method_url, update_shipping_payment, update_shipping_review);">
<label for="s_method_flatrate_flatrate">Самовывоз <span class="price">0,00 BYN</span> </label>
</li>
</ul>
</dd>
</dl>
Есть функция в JS
Код:
function save_shipping_method(shipping_method_url, update_shipping_payment, update_shipping_review) {
if (typeof update_shipping_payment == 'undefined') {
var update_shipping_payment = false;
}
if (typeof update_shipping_review == 'undefined') {
var update_shipping_review = false;
}
var form = $('one-step-checkout-form');
var shipping_method = $RF(form, 'shipping_method');
var payment_method = $RF(form, 'payment[method]');
//reload payment only if this feature is enabled in admin - show image loading
if (update_shipping_payment == 1) {
var payment_method_section = $$('div.onestepcheckout-payment-methods')[0];
paymentLoad();
}
//show image loading for review total
if (update_shipping_review == 1) {
var review = $('checkout-review-load');
reviewLoad();
}
var parameters = {
shipping_method: shipping_method,
payment_method: payment_method
};
//Find payment parameters and include
var items = $$('input[name^=payment]', 'select[name^=payment]');
var names = items.pluck('name');
var values = items.pluck('value');
for (var x = 0; x < names.length; x++) {
if (names[x] != 'payment[method]') {
parameters[names[x]] = values[x];
}
}
if ((update_shipping_payment == 1) || (update_shipping_review == 1)) {
$('onestepcheckout-button-place-order').disabled = true;
$('onestepcheckout-button-place-order').removeClassName('onestepcheckout-btn-checkout');
$('onestepcheckout-button-place-order').addClassName('place-order-loader');
}
var request = new Ajax.Request(shipping_method_url, {
method: 'post',
parameters: parameters,
onFailure: '',
onSuccess: function (transport) {
if (transport.status == 200) {
var response = getResponseText(transport);
if (enable_update_payment) {
if (update_shipping_payment == 1) {
payment_method_section.update(response.payment_method);
paymentShow();
// show payment form if available
if ($RF(form, 'payment[method]') != null) {
try {
var payment_method = $RF(form, 'payment[method]');
$('container_payment_method_' + payment_method).show();
$('payment_form_' + payment_method).show();
} catch (err) {
}
}
}
}
if (update_shipping_review == 1) {
review.update(response.review);
reviewShow();
}
checkvalidEmail();
}
}
});
//alert ('ok');
}
Ниже пример кода, как должно было бы работать, если бы не было других скриптов, блокирующих эти функции:
Код:
$('label[for="s_method_flatrate4_flatrate4"]').click(function(){
$(".dddddd--city").show(500);
$(".dddddd--street").show(500);
$( "#p_method_checkmo" ).prop( "checked", false );
$( "#p_method_cashondelivery" ).prop( "checked", true );
});
$('label[for="s_method_flatrate3_flatrate3"]').click(function(){
$(".dddddd--city").show(500);
$(".dddddd--street").show(500);
$( "#p_method_checkmo" ).prop( "checked", false );
$( "#p_method_cashondelivery" ).prop( "checked", true );
});
$('label[for="s_method_flatrate2_flatrate2"]').click(function(){
$(".dddddd--city").show(500);
$(".dddddd--street").show(500);
$( "#p_method_checkmo" ).prop( "checked", false );
$( "#p_method_cashondelivery" ).prop( "checked", true );
});
$('label[for="s_method_freeshipping_freeshipping"]').click(function(){
$(".dddddd--city").show(500);
$(".dddddd--street").show(500);
$( "#p_method_checkmo" ).prop( "checked", false );
$( "#p_method_cashondelivery" ).prop( "checked", true );
});
$('label[for="s_method_flatrate_flatrate"]').click(function(){
$(".dddddd--city").hide(500);
$(".dddddd--street").hide(500);
$( "#p_method_checkmo" ).prop( "checked", true );
$( "#p_method_cashondelivery" ).prop( "checked", false );
});
Задача - сделать так, чтобы при выборе одного из 5-ти input методов доставки происходили изменения в других input'ах методов оплаты, плюс скрывались/показывались div блоки.
Буду рад помощи и найти помощника на различные задачи по JS.